home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / tex / tetex / distrib / install.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  1996-11-16  |  75KB  |  2,511 lines

  1. #!/bin/sh
  2.  
  3. ################################################################
  4. # Basic IO:
  5. ################################################################
  6.  
  7. ################################################################
  8. # read: called with the name of a variable and (optionally) a
  9. #       different message text. Keeps the old value of the
  10. #       variable, if the empty string in entered.
  11. ################################################################
  12. gets()
  13. {
  14.     gets_var=$1; gets_text=${2-$gets_var}
  15.     eval old=\$$gets_var
  16.     eval $echon \""New value for $gets_text [$old]: "\"
  17.     read $gets_var
  18.     eval test -z \"\$$gets_var\" && eval $gets_var=\'$old\'
  19. }
  20.  
  21. ################################################################
  22. # getopt: get a menu choice.
  23. #   $1: string with valid characters
  24. #   $2: message for prompting
  25. ################################################################
  26. getopt()
  27. {
  28.     chars=$1; msg=$2
  29.     while true; do
  30.         #$echon "$msg ([$chars]): "
  31.         $echon "$msg: " >&2
  32.         read ans
  33.         ans=`echo $ans | tr '[a-z]' '[A-Z]'`
  34.         case "$ans" in
  35.           [$chars])
  36.             echo "$ans"
  37.             return
  38.         esac
  39.     done
  40. }
  41.  
  42. ################################################################
  43. # toolge: given the name of a variable, toogle switches between
  44. #         the values ' ' and X.
  45. ################################################################
  46. toggle()
  47. {
  48.     if eval test \"\$$1\" = X; then
  49.         eval $1=\' \'
  50.     else
  51.         eval $1=X
  52.     fi
  53. }
  54.  
  55. ################################################################
  56. # This tricky function displays the value of a variable that can
  57. # contain newline characters. Variables will be expanded, too.
  58. # Arguments:
  59. #       1: the name of the variable
  60. ################################################################
  61. textvar_show()
  62. {
  63.     OLDIFS=$IFS; IFS='';
  64.     eval echo \"`eval echo \\$${1}`\"
  65.     IFS=$OLDIFS
  66. }
  67.  
  68. readln()
  69. {
  70.     $echon 'Press return to continue... '
  71.     read foo
  72. }
  73.  
  74. help()
  75. {
  76.     var=$1
  77.     cls
  78.     textvar_show $var 2>&1 | eval $PAGER
  79.     echo
  80.     readln
  81. }
  82.  
  83. ################################################################
  84. # Use the yesno functions to ask the user a simple yes/no
  85. # question.
  86. # Arguments:
  87. #   $1: test to display for the question (" (Y/N)? " will
  88. #       automatically be appended).
  89. ################################################################
  90. yesno()
  91. {
  92.     while true; do
  93.     $echon "$1 (Y/N)? "
  94.     read ans
  95.     case $ans in
  96.         y|Y)    return 0;;
  97.         n|N)    return 1;;
  98.         esac
  99.     done
  100. }
  101.  
  102. ################################################################
  103. # A set of functions the might do an echo without linefeed in
  104. # the end. Function find_echo sets the variable "echon" to a
  105. # suitable function.
  106. ################################################################
  107. echo_a() { echo      -n "$@";   }
  108. echo_b() { echo         "$@\c"; }
  109. echo_c() { echo      -e "$@\c"; }
  110. echo_d() { /bin/echo -n "$@";   }
  111. echo_e() { /bin/echo    "$@\c"; }
  112. echo_f() { /bin/echo -e "$@\c"; }
  113.  
  114. ################################################################
  115. # Test which of the above functions does the trick. We set
  116. # the variable "echon" to the first function that works
  117. # correctly.
  118. ################################################################
  119. find_echo()
  120. {
  121.     for i in a b c d e f; do
  122.         test "`echo_$i c``echo_$i a`"  = ca && echon=echo_$i && return
  123.     done
  124.     echon=echo
  125. }
  126.  
  127.  
  128. ################################################################
  129. # series and packages management:
  130. ################################################################
  131.  
  132. ###############################################################################
  133. # The series structure:
  134. #  s_${series}_la:   "list of all packages"
  135. #  s_${series}_lf:   "list of packages we found on the disk"
  136. #  s_${series}_ls:   "list of selected packages"
  137. #  s_${series}_mis:  "list of packages that are missing"
  138. #  s_${series}_nf:   "number of packages we find"
  139. #  s_${series}_ns:   "number of selected packages"
  140. #  s_${series}_nmis: "number of packages that are missing"
  141. #  s_${series}_du:   "disk space usage of all packages found"
  142. #  s_${series}_dus:  "disk space usage of selected packages"
  143. #  s_${series}_h:    "help text"
  144. ###############################################################################
  145.  
  146. ###############################################################################
  147. # The package structure:
  148. #  p_${package}_n:  "the name of the package"
  149. #  p_${package}_s:  "is the package selected?"
  150. #  p_${package}_l:  "level: required, recommended or optional"
  151. #  p_${package}_da: "did we find the package?"
  152. #  p_${package}_fn: "the filename of a package the we found"
  153. #  p_${package}_h:  "help text"
  154. ###############################################################################
  155.  
  156. allseries_locate()
  157. {
  158.     for al_series in $S_all_la;
  159.     do
  160.         series_locate $al_series;
  161.     done
  162. }
  163.  
  164. allseries_locate_check()
  165. {
  166.     notall=false
  167.     hasbin=false
  168.     test "$this_platform" != "" &&
  169.         eval test \"\$p_${this_platform}_da\" = true &&
  170.         hasbin=true
  171.     for alc_series in $S_all_la; do
  172.         test $alc_series = bin && $hasbin && continue
  173.         eval alc_all_packages=\"\$s_${alc_series}_la\"
  174.         for alc_p in $alc_all_packages; do
  175.           if eval test \"\$p_${alc_p}_da\" = false; then
  176.             notall=true
  177.             eval echo \""Warning: package not found: \${p_${alc_p}_d-$alc_p} (series: $alc_series)."\"
  178.           fi
  179.         done
  180.     done
  181.     if test "$notall" = true; then
  182.         echo
  183.         echo "Notice: ignore the warnings, if the packages are missing intentionally."
  184.         echo
  185.         $echon "Press return to continue or Control-C to abort... "
  186.         read foo
  187.     fi
  188. }
  189.  
  190. series_locate()
  191. {
  192.     sl_series=$1
  193.     eval sl_all_packages=\"\$s_${sl_series}_la\"
  194.     eval dft_dir=\"\$s_${sl_series}_d\"
  195.     lf=; mis=; nmis=0; nf=0
  196.     for sl_p in $sl_all_packages; do
  197.         eval bn=\${p_${sl_p}_d-$sl_p}
  198.         fn=
  199.         test -f $here/$dft_dir/$bn.tar.gz && fn=$here/$dft_dir/$bn.tar.gz
  200.         test -f $here/$bn.tar.gz && fn=$here/$bn.tar.gz
  201.         if test -z "$fn"; then
  202.           eval p_${sl_p}_da=false
  203.           eval p_${sl_p}_fn=
  204.  
  205.           mis="$mis $sl_p"
  206.           nmis=`expr $nmis + 1`
  207.         else
  208.           eval p_${sl_p}_da=true
  209.           eval p_${sl_p}_fn=$fn
  210.  
  211.           lf="$lf $sl_p"
  212.           nf=`expr $nf + 1`
  213.         fi
  214.     done
  215.     eval s_${sl_series}_lf=\"$lf\"
  216.     eval s_${sl_series}_mis=\"$mis\"
  217.     eval s_${sl_series}_nmis=$nmis
  218.     eval s_${sl_series}_nf=$nf
  219.     setlength s_${sl_series}_nf 2
  220. }
  221.  
  222. series_select_all()
  223. {
  224.     ssa_series=$1
  225.     eval all_packages=\"\$s_${ssa_series}_lf\"
  226.     for ssa_p in $all_packages; do
  227.         package_select $ssa_p
  228.     done
  229.     series_stat $ssa_series
  230. }
  231.  
  232. series_deselect_all()
  233. {
  234.     sda_series=$1
  235.     eval all_packages=\"\$s_${sda_series}_lf\"
  236.     for sda_p in $all_packages; do
  237.         package_deselect $sda_p
  238.     done
  239.     series_stat $sda_series
  240. }
  241.  
  242. series_stat()
  243. {
  244.     series=$1
  245.     dus=0
  246.     ns=0
  247.     ls=''
  248.     eval ss_all_packages=\"\$s_${series}_lf\"
  249.     for ss_p in $ss_all_packages; do
  250.         eval \$p_${ss_p}_s || continue
  251.         eval newdu=\"\$p_${ss_p}_du\"
  252.         if test -z "$newdu"; then
  253.           echo "unknown disk space usage for package: $ss_p"
  254.           newdu=0
  255.         fi
  256.         ls="$ls $ss_p"
  257.         ns=`expr $ns + 1`
  258.         dus=`expr $dus + $newdu`
  259.     done
  260.     eval s_${series}_dus=\$dus
  261.     setlength s_${series}_dus 6
  262.     eval s_${series}_ns=\$ns
  263.     setlength s_${series}_ns 2
  264.     eval s_${series}_ls=\$ls
  265. }
  266.  
  267. nobin_stat()
  268. {
  269.     dus=0; nf=0; ns=0;
  270.     for ns_series in $S_nobin_la; do
  271.       eval dus=\`expr \$dus + \$s_${ns_series}_dus\`
  272.       eval nf=\` expr \$nf  + \$s_${ns_series}_nf\`
  273.       eval ns=\` expr \$ns  + \$s_${ns_series}_ns\`
  274.     done
  275.     S_nobin_dus=$dus;  setlength S_nobin_dus 6
  276.     S_nobin_nf=$nf;    setlength S_nobin_nf 2
  277.     S_nobin_ns=$ns;    setlength S_nobin_ns 2
  278.     total_stat
  279. }
  280.  
  281. total_stat()
  282. {
  283.     s_total_dus=`expr $s_bin_dus + $S_nobin_dus`; setlength s_total_dus 6
  284.     s_total_nf=`expr $s_bin_nf + $S_nobin_nf`;    setlength s_total_nf 2
  285.     s_total_ns=`expr $s_bin_ns + $S_nobin_ns`;    setlength s_total_du 2
  286. }
  287.  
  288. package_select()   { eval p_${1}_s=true;  }
  289. package_deselect() { eval p_${1}_s=false; }
  290.  
  291. series_list()
  292. {
  293.     sl_series=$1
  294.     cls
  295.     echo "Series \`\`$sl_series'' statistics:"; echo
  296.     echo "                  package name   size selected"
  297.     echo "  --------------------------------------------"
  298.     eval sl_all_p=\"\$s_${sl_series}_lf\"
  299.     for sl_p in $sl_all_p; do
  300.       eval sl_n=\"\$p_${sl_p}_n\"
  301.       eval sl_du=\"\$p_${sl_p}_du\"
  302.       eval sl_s=\"\$p_${sl_p}_s\"
  303.       if $sl_s; then sl_s='[X]'; else sl_s='[ ]'; fi
  304.       setlength sl_n 30
  305.       setlength sl_du 6
  306.       echo "$sl_n ${sl_du}k    $sl_s"
  307.     done
  308.     eval sl_s_dus=\"\$s_${sl_series}_dus\"
  309.     setlength sl_s_dus 6
  310.     echo "  --------------------------------------------"
  311.     echo "                selected size: ${sl_s_dus}k"
  312.     echo
  313.     echo
  314.     readln
  315. }
  316.  
  317. series_init()
  318. {
  319.     $echon "Locating packages... "; allseries_locate; echo "Done."
  320.     $echon "Initializing series... "
  321.     for si_series in $S_nobin_la; do
  322.         series_select_all $si_series
  323.     done
  324.     echo "Done."
  325.     series_deselect_all bin
  326.     test -z "$this_platform" || {
  327.         this_platform_set "$this_platform"
  328.         package_select "$this_platform"
  329.         series_stat bin
  330.     }
  331.     allseries_locate_check
  332. }
  333.  
  334. this_platform_set()
  335. {
  336.     this_platform="$1"
  337.     for tps_p in $s_bin_lf; do
  338.         eval p_${tps_p}_l=optional
  339.     done
  340.     series_deselect_all bin
  341.     if test -z "$this_platform"; then
  342.         this_platform_n=
  343.         this_platform_d=
  344.     else
  345.       package_select ${this_platform}
  346.       series_stat bin
  347.       eval this_platform_n=\$p_${this_platform}_n
  348.       eval this_platform_d=\$p_${this_platform}_d
  349.       eval p_${this_platform}_l=required
  350.     fi
  351.     nobin_stat
  352. }
  353.  
  354. ################################################################
  355. #debugging:
  356. ################################################################
  357. series_dbg()
  358. {
  359.     series=$1
  360.  
  361.     eval echo \""all packages: '\$s_${series}_la'"\"
  362.     eval echo \""default dir:  '\$s_${series}_d'"\"
  363.     eval echo \""selected:     '\$s_${series}_ls'"\"
  364.     eval echo \""found:        '\$s_${series}_lf'"\"
  365.     eval echo \""missing:      '\$s_${series}_mis'"\"
  366.     eval echo \""anz found:    '\$s_${series}_nf'"\"
  367.     eval echo \""anz missing:  '\$s_${series}_nmis'"\"
  368.     eval echo \""anz selected: '\$s_${series}_ns'"\"
  369.     eval echo \""du total:     '\$s_${series}_du'"\"
  370.     eval echo \""du selected:  '\$s_${series}_dus'"\"
  371.     echo help:
  372.     textvar_show s_${series}_h
  373.     echo
  374. }
  375.  
  376. package_dbg()
  377. {
  378.     p=$1
  379.     eval echo \""gefunden: '\$p_${p}_da'"\"
  380.     eval echo \""filename: '\$p_${p}_fn'"\"
  381.     eval echo \""du:       '\$p_${p}_du'"\"
  382.     eval echo \""version:  '\$p_${p}_v'"\"
  383.     eval echo \""selected: '\$p_${p}_s'"\"
  384.     eval echo \""name:     '\$p_${p}_n'"\"
  385.     echo help:
  386.     textvar_show p_${p}_h
  387.     echo
  388. }
  389.  
  390. ################################################################
  391. # utility functions:
  392. ################################################################
  393.  
  394. bad_sh()
  395. {
  396.     /bin/sh -c 'exit 1'
  397.     retval=$?
  398.     if test "$retval" != 1; then
  399.         echo
  400.         echo 'Your /bin/sh is completely broken. A simple program like'
  401.         echo
  402.         echo "                /bin/sh -c 'exit 1'; echo \$?"
  403.         echo
  404.         echo "gives a wrong result."
  405.         echo
  406.         echo 'Your shell is likely to break some scripts of teTeX. Please'
  407.         echo 'update your /bin/sh first and try to install teTeX later.'
  408.         echo 'GNU bash 1.14.5 will do, whereas bash 1.14.3 is known to have'
  409.         echo 'problems.'
  410.         echo
  411.         exit 1
  412.    fi
  413. }
  414.  
  415. warning()
  416. {
  417.     echo "$@"
  418. }
  419.  
  420. cls()
  421. {
  422.     test "$debug" = true || clear
  423. }
  424.  
  425. check_for_binary()
  426. {
  427.     testbin=$1
  428.     case "$testbin" in
  429.       /*) test -x "$testbin" && test -f "$testbin"; return;;
  430.       *)
  431.          OLDIFS=$IFS; IFS=:; eval set $PATH; IFS=$OLDIFS
  432.          for this_dir
  433.          do
  434.              test -x "$this_dir/$testbin" &&
  435.              test -f "$this_dir/$testbin" && return 0
  436.          done
  437.          return 1;;
  438.     esac
  439. }
  440.  
  441. require_binaries()
  442. {
  443.     for this_bin
  444.     do
  445.         check_for_binary $this_bin ||
  446.           fatal "program '$this_bin' not found in PATH"
  447.     done
  448. }
  449.  
  450. man_fix_texmf()
  451. {
  452.     file=$TETEXDIR/man/man1/bibtex.1
  453.     test -f "$file" || return
  454.     man_texmf_old=`grep texmf/bibtex/bst $file 2>/dev/null | sed 's@.*:@@; s@/bibtex/bst@@'`
  455.     test -z "$man_texmf_old" && man_texmf_old=$man_texmf_old_fallback
  456.     man_tetexdir_old=`dirname "$man_texmf_old"`
  457.     test -z "$man_tetexdir_old" && man_tetexdir_old=$man_tetexdir_old_fallback
  458.  
  459.     if test "$opt_savespace_man_rm" = X; then
  460.         rm -f $TETEXDIR/man/man*/*
  461.         rmdir $TETEXDIR/man/man*
  462.     fi 2>/dev/null
  463.  
  464.     if test "$TEXMF" != "$man_texmf_old" ||
  465.        test "$man_tetexdir_old" != "$TETEXDIR"; then
  466.         $echon "Fixing pathnames in the manualpages... "
  467.         for mpage in $TETEXDIR/man/*/*[0-9]; do
  468.           sed s@$man_texmf_old@$TEXMF@g\;s@$man_tetexdir_old@$TETEXDIR@g \
  469.             $mpage > $TMPDIR/man.tmp.$$
  470.           test -s $TMPDIR/man.tmp.$$ && mv $TMPDIR/man.tmp.$$ $mpage
  471.         done
  472.         echo "Done."
  473.     fi
  474.     test "$opt_savespace_man_gzip" = X && gzip $TETEXDIR/man/cat*/*.[1.9]
  475.     touch $TETEXDIR/man/cat*/* 2>/dev/null
  476. }
  477.  
  478. maketex_setopt()
  479. {
  480.     mtsite=$TEXMF/$mt_site_loc
  481.     test -w "$mtsite" || return
  482.     test -w "$TETEXDIR/texmf.cnf" || return
  483.     test "$opt_varfonts" = X || return
  484.  
  485.     ed "$TETEXDIR/texmf.cnf" >$ERRLOG 2>&1 <<eof
  486. /^VARFONTS.*=/
  487. c
  488. VARFONTS    = $opt_varfonts_dir
  489. .
  490. w
  491. q
  492. eof
  493.     show_error
  494.  
  495.     ed "$mtsite" >$ERRLOG 2>&1 <<'eof'
  496. /^: \${MT_FEATURES=/
  497. s/}/:varfonts}/
  498. w
  499. q
  500. eof
  501.     show_error
  502. }
  503.  
  504. texmfcnf_fix_texmf()
  505. {
  506.     test "$TETEXDIR/texmf" = "$TEXMF" && return
  507.     test -w "$TETEXDIR/texmf.cnf" || return
  508.     ed "$TETEXDIR/texmf.cnf" >$ERRLOG 2>&1 <<-eof
  509. /^TEXMF.*=/
  510. c
  511. TEXMF        = $TEXMF
  512. .
  513. w
  514. q
  515. eof
  516.     show_error
  517.     rm -f $TETEXDIR/texmf
  518. }
  519.  
  520. texmfcnf_fix_tetexdir()
  521. {
  522.     test -f $TETEXDIR/texmf.cnf || return
  523.     if test ! -w "$TETEXDIR/texmf.cnf"; then
  524.         warning "Warning: cannot write to file $TETEXDIR/texmf.cnf"
  525.         readln
  526.         return
  527.     fi
  528.     if test $platform_subdir_strip = true; then
  529.         newtexmf='$SELFAUTODIR'
  530.     else
  531.         newtexmf='$SELFAUTOPARENT'
  532.     fi
  533.     ed "$TETEXDIR/texmf.cnf" >$ERRLOG 2>&1 <<-eof
  534. /^TETEXDIR.*=/
  535. c
  536. TETEXDIR           = $newtexmf
  537. .
  538. w
  539. q
  540. eof
  541.     show_error
  542. }
  543.  
  544. # fill a string with blanks:
  545. setlength()
  546. {
  547.     var=$1
  548.     length=$2
  549.     eval value=\"\$$var\"
  550.     l=`expr "$value" : '.*'`
  551.     test $l -lt $length || return
  552.     d=`expr $length - $l`
  553.     OLDIFS=$IFS; IFS=''
  554.     substr=`awk 'END {print substr("                                         ", 1, ANZ)}' ANZ=$d </dev/null`
  555.     eval $var='$substr$value'
  556.     IFS=$OLDIFS
  557. }
  558.  
  559. # NEW PLATFORM: add a 'case'
  560. platform_guess()
  561. {
  562.    case `(guess | sed 's@-.*-@-@')` in
  563.      *freebsd2.0*)
  564.        echo i386_freebsd205;;
  565.      *freebsd2.1.0*)
  566.        echo i386_freebsd210;;
  567.      *freebsd2*)
  568.        echo i386_freebsd215;;
  569.      *netbsd1.0)
  570.        echo i386_netbsd10;;
  571.      *netbsd*)
  572.        echo i386_netbsd11;;
  573.      *bsdi2*)
  574.        echo i386_bsdi20;;
  575.      m68k-linux)
  576.          echo m68k_linux;;
  577.      m68k-linux*)
  578.          echo m68k_linuxaout;;
  579.      *86-linux)
  580.          echo i486_linux;;
  581.      *86-linuxaout)
  582.          echo i486_linuxaout;;
  583.      *irix5.2)
  584.        echo mips_irix52;;
  585.      *irix5.*)
  586.        echo mips_irix53;;
  587.      rs6000-aix3*)
  588.        echo rs6000_aix32;;
  589.      rs6000-aix4*)
  590.        echo rs6000_aix411;;
  591.      sparc-solaris2.5)
  592.        echo sparc_solaris25;;
  593.      sparc-solaris2.4)
  594.        echo sparc_solaris24;;
  595.      sparc-sunos4*)
  596.        echo sparc_sunos413;;
  597.      alpha-osf2*)
  598.        echo alpha_osf20;;
  599.      alpha-osf*)
  600.        echo alpha_osf32;;
  601.      hppa*-hpux9*)
  602.        echo hppa11_hpux901;;
  603.      hppa*-hpux*)
  604.        echo hppa11_hpux1001;;
  605.      *ultrix4*)
  606.        echo mips_ultrix_44;;
  607.      *nextstep3*)
  608.        echo mab_nextstep3;;
  609.    esac
  610. }
  611.  
  612. unset_vars()
  613. {
  614.     for var in $envvars; do
  615.         unset $var
  616.     done
  617. }
  618.  
  619. mkdirhier()
  620. {
  621.     case $1 in
  622.         /*) cd /;;
  623.     esac
  624.     OLDIFS=$IFS; IFS=/; eval set $1; IFS=$OLDIFS
  625.     for i
  626.     do
  627.         test -d $i || mkdir $i || break
  628.         cd $i || break
  629.     done
  630. }
  631.  
  632. # [t]ry again, [r]econfigure, [a] abort
  633. tra()
  634. {
  635.     msg=$1
  636.     cls
  637.     echo "Oops, I am in trouble here! The error was:"
  638.     echo ">> $msg <<"
  639.     echo
  640.     case `getopt TRQ 'What shall we do now: <t>ry again, <r>econfigure, <q>uit'` in
  641.         T) return;;
  642.         R) menu_main;;
  643.         Q) exit 1;;
  644.     esac
  645. }
  646.  
  647. warn()
  648. {
  649.     msg=$1
  650.     cls
  651.     echo "Oops, I am in trouble here! The problem was:"
  652.     echo ">> $msg <<"
  653.     echo
  654.     case `getopt CQ 'What shall we do now: <c>continue, <q>uit'` in
  655.         C) return;;
  656.         Q) exit 1;;
  657.     esac
  658. }
  659.  
  660. fatal()
  661. {
  662.     echo; echo
  663.     echo "ERROR: $@."
  664.     echo "This was a fatal error, my friend. Installation aborted."
  665.     exit 1
  666. }
  667.  
  668. show_error()
  669. {
  670.     test $? = 0 && return
  671.     cls
  672.     echo 'WARNING: the last command returned an error.'
  673.     if yesno 'Do you want to see the errorlog'; then
  674.         cat $ERRLOG | eval $PAGER
  675.         readln
  676.     fi
  677.     cls
  678. }
  679.  
  680. nonemptydir()
  681. {
  682.   test -d "$1" && test -n "`ls \"$1\"`"
  683.   return $?
  684. }
  685.  
  686. # this is a hard job... trying to anticipiate trouble...
  687. sanity_checks()
  688. {
  689.     while nonemptydir $TETEXDIR; do
  690.         tra "non-empty directory TETEXDIR=$TETEXDIR already exists"
  691.     done
  692.     while nonemptydir $TEXMF; do
  693.         tra "non-empty directory TEXMF=$TEXMF already exists"
  694.     done
  695.     while test "$opt_symlink" = X &&
  696.           test ! -z "$opt_symlinks_bin" &&
  697.           test -d "$opt_symlinks_bin" &&
  698.           test ! -w "$opt_symlinks_bin"; do
  699.         tra "cannot write to directory $opt_symlinks_bin"
  700.     done
  701.     while test "$opt_symlink" = X &&
  702.           test ! -z "$opt_symlinks_man" &&
  703.           test -d "$opt_symlinks_man" &&
  704.           test ! -w "$opt_symlinks_man"; do
  705.         tra "cannot write to directory $opt_symlinks_man"
  706.     done
  707.     while test "$opt_symlink" = X &&
  708.           test ! -z "$opt_symlinks_info" &&
  709.           test -d "$opt_symlinks_info" &&
  710.           test ! -w "$opt_symlinks_info"; do
  711.         tra "cannot write to directory $opt_symlinks_info"
  712.     done
  713.     while test ! -z "$opt_varfonts_dir" &&
  714.           test -d "$opt_varfonts_dir" &&
  715.           test ! -w "$opt_varfonts_dir"; do
  716.         tra "cannot write to directory $opt_varfonts_dir"
  717.     done
  718. }
  719.  
  720. prepare_directories()
  721. {
  722.     alldirs="$TMPDIR $TETEXDIR $TEXMF
  723.              $opt_symlinks_bin $opt_symlinks_info"
  724.     test -z "$opt_symlinks_man" ||
  725.              alldirs="$alldirs $opt_symlinks_man/man1 $opt_symlinks_man/man5 $opt_symlinks_man/cat1 $opt_symlinks_man/cat5"
  726.     test -z "$opt_varfonts_dir" ||
  727.              alldirs="$alldirs $opt_varfonts_dir/pk $opt_varfonts_dir/tfm"
  728.     for dir in $alldirs; do
  729.         while test ! -d $dir || test ! -w $dir; do
  730.           mkdirhier $dir
  731.           test -d $dir || { tra "could not make directory '$dir'"; continue; }
  732.           test -w $dir || { tra "cannot write to directory '$dir'"; continue; }
  733.         done
  734.     done
  735.     chmod 700 $TMPDIR || fatal "command 'chmod 700 $TMPDIR' failed"
  736.     test -z "$opt_varfonts_dir" ||
  737.         chmod 1777 $opt_varfonts_dir/pk $opt_varfonts_dir/tfm ||
  738.         fatal "command 'chmod 1777 $opt_varfonts_dir/pk $opt_varfonts_dir/tfm' failed"
  739.     ln -s $TETEXDIR $TMPDIR/$tetex_prefix
  740.     test -d $TETEXDIR/texmf || ln -s $TEXMF $TETEXDIR/texmf
  741.     platform_subdir_strip=false
  742.     if test $s_bin_ns = 1; then
  743.         cls
  744.         textvar_show screen_6
  745.         echo
  746.         if yesno 'Do you want to omit the extra subdirectory'; then
  747.           platform_subdir_strip=true
  748.           mkdir $TETEXDIR/bin
  749.           for pd_p in $s_bin_lf; do
  750.             if eval \$p_${pd_p}_s; then
  751.               eval platform_subdir_strip_d=\$p_${pd_p}_d
  752.               break
  753.             fi
  754.           done
  755.           ln -s . $TETEXDIR/bin/$platform_subdir_strip_d
  756.         fi
  757.     fi
  758.     mkdirhier $TEXMF/lists
  759. }
  760.  
  761. opt_do_symlinks()
  762. {
  763.     test "$opt_symlinks" = X || return
  764.     $echon 'Creating symbolic links... '
  765.     if test -d $TETEXDIR/man/man1 && test -w $opt_symlinks_man/man1; then
  766.         cd $opt_symlinks_man/man1
  767.         rm -f `ls $TETEXDIR/man/man1`; ln -s $TETEXDIR/man/man1/* .
  768.     fi
  769.     if test -d $TETEXDIR/man/man5 && test -w $opt_symlinks_man/man5; then
  770.         cd $opt_symlinks_man/man5
  771.         rm -f `ls $TETEXDIR/man/man5`; ln -s $TETEXDIR/man/man5/* .
  772.     fi
  773.     if test -d $TETEXDIR/man/cat1 && test -w $opt_symlinks_man/cat1; then
  774.         cd $opt_symlinks_man/cat1
  775.         rm -f `ls $TETEXDIR/man/cat1`; ln -s $TETEXDIR/man/cat1/* .
  776.     fi
  777.     if test -d $TETEXDIR/man/cat5 && test -w $opt_symlinks_man/cat5; then
  778.         cd $opt_symlinks_man/cat5
  779.         rm -f `ls $TETEXDIR/man/cat5`; ln -s $TETEXDIR/man/cat5/* .
  780.     fi
  781.     if test -d $TETEXDIR/info && test -w "$opt_symlinks_info"; then
  782.         cd $opt_symlinks_info
  783.         rm -f `ls $TETEXDIR/info`; ln -s $TETEXDIR/info/*info* .
  784.     fi
  785.     if test "$opt_symlinks" = X; then
  786.         if test ! -z "$this_platform_bin"; then
  787.           if test -w "$opt_symlinks_bin"; then
  788.             cd $opt_symlinks_bin
  789.             rm -f `ls $this_platform_bin`; ln -s $this_platform_bin/* .
  790.             echo 'Done.'
  791.           fi
  792.         else
  793.           cls
  794.           echo '                              WARNING!                              '
  795.           echo
  796.           echo 'teTeX binaries for this platform are not installed. If you install'
  797.           echo 'them later, you can create symbolic links to $opt_symlinks_bin'
  798.           echo 'with a command like:'
  799.           echo
  800.           echo "  ln -s $TETEXDIR/bin/PLATFORM/* $opt_symlinks_bin"
  801.           echo
  802.           echo 'PLATFORM needs to be replaced by the name of the subdirectory that'
  803.           echo 'contains the binaries for this platform.'
  804.           echo
  805.           readln
  806.         fi
  807.     fi
  808. }
  809.  
  810. locate_binaties()
  811. {
  812.     this_platform_bin=
  813.     lb_dir=$TETEXDIR/bin/$this_platform_d
  814.     test -x "$lb_dir/initex" && this_platform_bin=$lb_dir
  815.     test -x "$TETEXDIR/bin/initex" && this_platform_bin=$TETEXDIR/bin
  816.     test ! -d $lb_dir && rm -f $lb_dir 2>/dev/null
  817.     test -z "$this_platform_bin" && return
  818.     PATH="${this_platform_bin}:${PATH}"; export PATH
  819. }
  820.  
  821. untgz()
  822. {
  823.     cd $TMPDIR
  824.     for u_series in $S_all_la; do
  825.         eval selected=\$s_${u_series}_ls
  826.         for u_package in $selected; do
  827.           eval file=\$p_${u_package}_fn
  828.           list=`basename $file| sed 's@.tar.gz$@@'`
  829.           package_showinfo $u_package
  830.           if $checkit; then
  831.             echo
  832.             $echon "Testing integrity of file $file... "
  833.             gzip --test $file
  834.             if test $? = 0; then
  835.               echo "Ok."
  836.             else
  837.               warn "Integrity of file $file is void."
  838.               continue
  839.             fi
  840.           fi
  841.           $echon "Extracting package $p_current_n... "
  842.           gzip -dc < $file | tar xvf - >$ERRLOG 2>&1
  843.           if test $? = 0; then
  844.             echo 'Done.'
  845.             sed /$tetex_prefix/'!d; s@[^/]*'$tetex_prefix'/*@@; s/[,/]*[     ].*//; /^$/d' $ERRLOG > $TEXMF/lists/$list
  846.             if test -s $TEXMF/lists/$list; then
  847.               chmod 755 $TEXMF/lists/$list
  848.             else
  849.               rm -f $TEXMF/lists/$list
  850.             fi
  851.           else
  852.             show_error
  853.             continue
  854.           fi
  855.         done
  856.     done
  857.     rmdir $TEXMF/lists 2>/dev/null
  858. }
  859.  
  860. prepare_errorlog()
  861. {
  862.     touch "$ERRLOG"
  863.     test -w "$ERRLOG" || fatal "cannot write to file '$ERRLOG'"
  864. }
  865.  
  866. locate_binaries()
  867. {
  868.     require_binaries touch sed awk gzip ln rm ls tar tr mkdir cat pwd
  869. }
  870.  
  871. init()
  872. {
  873.     cd $here
  874.     # for fast installation: set CHECKIT_OVERRIDE to false in your environment.
  875.     checkit=${CHECKIT_OVERRIDE-true}
  876.     bad_sh
  877.     prepare_errorlog
  878.     locate_binaries
  879.     find_echo
  880.     unset_vars
  881.     this_platform=`platform_guess`
  882.     series_init
  883.     nobin_stat    
  884. }
  885.  
  886. fixperm()
  887. {
  888.     $echon 'Fixing permissions... '
  889.     cd $TEXMF
  890.     files=`find . -perm -2 \( -type d -o -type f \) -print`
  891.     test -z "$files" || chmod go-w $files
  892.     cd $TETEXDIR
  893.     files=`find . -perm -2 \( -type d -o -type f \) -print`
  894.     test -z "$files" || { chmod go-w $files 2>$ERRLOG; show_error; }
  895.     dirs=`find $TEXMF/fonts/tfm $TEXMF/fonts/pk $TEXMF/fonts/source/jknappen/* -type d -print 2>$ERRLOG`
  896.     test -z "$dirs" || { chmod 1777 $dirs 2>$ERRLOG; show_error; }
  897.     test -f $TEXMF/ls-R && { chmod 666 $TEXMF/ls-R 2>$ERRLOG; show_error; }
  898.     echo 'Done.'
  899. }
  900.  
  901. install_now()
  902. {
  903.     umask 022
  904.     cls; sanity_checks
  905.     cls; prepare_directories
  906.     umask 0
  907.     cls; untgz
  908.     { $platform_subdir_strip && rm -f $TETEXDIR/bin/$platform_subdir_strip_d; } >/dev/null 2>&1
  909.     cls; fixperm
  910.     umask 022
  911.     locate_binaties
  912.     man_fix_texmf
  913.     opt_do_symlinks
  914.     texmfcnf_fix_texmf
  915.     texmfcnf_fix_tetexdir
  916.     update
  917.     init_tetex
  918.     cls
  919.     if test ! -z "$this_platform_bin"; then
  920.         if test -z "$opt_symlinks_bin"; then
  921.           bin=$this_platform_bin
  922.         else
  923.           bin=$opt_symlinks_bin
  924.         fi
  925.  
  926.         cat <<eof
  927. Welcome to the teTeX TeX system!
  928.  
  929. Some notes on how to proceed:
  930.   - set up your PATH to include the directory containing the just
  931.     installed binaries in $bin.
  932.     Similarly, MANPATH and INFOPATH to include the relevant newly
  933.     installed subdirectories.
  934.   - call texconfig to set up a few things: hyphenation, paper size for
  935.     printing, printer mode (implies resolution), font generation, etc.
  936.   - you need to run texhash after you install new files in
  937.       $TEXMF
  938.   - There are two mailing list for discussion and announces about the
  939.     teTeX.  See the FAQ (FAQ-teTeX) for more about this.
  940.   - See CTAN sites (systems/teTeX/updates) for updates and corrections      
  941.     to the system. For information about CTAN, see \$TEXMF/doc/help/ctan.
  942.   - run \`\`texconfig confall'' to check your setup
  943. eof
  944.     else
  945.     cat <<eof
  946. Welcome to the teTeX TeX system!
  947.  
  948. Some notes on how to proceed:
  949.   - binaries for this platform are not installed. If you install the
  950.     missing binaries later, make sure to run
  951.       texconfig init
  952.   - call texconfig to set up a few things: hyphenation, paper size for
  953.     printing, printer mode (implies resolution), font generation, etc.
  954.   - you need to run texhash after you install new files in
  955.       $TEXMF
  956.   - There are two mailing list for discussion and announces about the
  957.     teTeX.  See the FAQ (FAQ-teTeX) for more about this.
  958.   - See CTAN sites (systems/teTeX/updates) for updates and corrections
  959.     to the system. For information about CTAN, see \$TEXMF/doc/help/ctan.
  960.   - run \`\`texconfig confall'' to check your setup
  961. eof
  962.     fi
  963.  
  964.     exit
  965. }
  966.  
  967. tetex_dump()
  968. {
  969.     $echon "Building filename database... "
  970.     echo '% This is file ls-R. Maintained by texhash and append_db.' > $TEXMF/ls-R
  971.     (cd $TEXMF; \ls -LAR ./ /dev/null | grep -v '^\.*$' | sed 's@\.//@./@' ) 2>$ERRLOG >> $TEXMF/ls-R
  972.     show_error
  973.     chmod 666 $TEXMF/ls-R
  974.     echo 'Done.'
  975.  
  976.     if test ! -z "$this_platform_bin"; then
  977.         test "$debug" = true && { set; sleep 5; }
  978.         $echon 'Creating mf.base and tex format files... '
  979.         eval TEXMF=$TEXMF $this_platform_bin/texconfig init >$ERRLOG 2>&1
  980.         show_error
  981.         echo 'Done.'
  982.     fi
  983.     $echon "Setting permissions for fonts tree... "
  984.     if test "x$opt_varfonts" = xX; then
  985.       texconfig font ro
  986.     else
  987.       texconfig font rw
  988.     fi >/dev/null 2>&1
  989.     echo Done.
  990. }
  991.  
  992. init_tetex()
  993. {
  994.     tetex_dump
  995.     maketex_setopt
  996. }
  997.  
  998. update()
  999. {
  1000.     test "$opt_update" = X || return
  1001.     echo "locating files for update option... "
  1002.     update_get_texmf
  1003.     if test -d "$opt_update_oldtexmf"; then
  1004.         echo "  old TEXMF: $opt_update_oldtexmf"
  1005.     else
  1006.         echo "  old TEXMF: not found"
  1007.     fi
  1008.     update_get_xdvi_ad
  1009.     if test -f "$opt_update_xdviad"; then
  1010.         echo "  old app-defaults file for xdvi: $opt_update_xdviad"
  1011.         rm -f $TEXMF/xdvi/XDvi
  1012.         cp "$opt_update_xdviad" $TEXMF/xdvi/XDvi
  1013.     else
  1014.         echo "  old app-defaults file for xdvi: not found"
  1015.     fi
  1016.     if test -d "$opt_update_oldtexmf/dvips"; then
  1017.         echo "  old dvips config files: $opt_update_oldtexmf/dvips"
  1018.         files=`(cd "$opt_update_oldtexmf/dvips"; find . -name config.\* -print)`
  1019.         (cd $TEXMF/dvips && rm -f `echo "$files" | sed 's@.*/@@'`)
  1020.         (cd "$opt_update_oldtexmf/dvips"; cp $files $TEXMF/dvips)
  1021.     else
  1022.         echo "  old dvips config files: not found"
  1023.     fi
  1024. }
  1025.  
  1026. update_get_texmf()
  1027. {
  1028.     opt_update_oldtexmf=`sed -n '/^TEXMF[     ]*=/!d; s/.*=[     ]*//; s/[     ].*//; s@\$TETEXDIR@'$opt_update_olddir'@; p' $opt_update_olddir/texmf.cnf 2>/dev/null`
  1029.     test ! -d "$opt_update_oldtexmf" && opt_update_oldtexmf="$opt_update_olddir/texmf"
  1030. }
  1031.  
  1032. update_get_xdvi_ad()
  1033. {
  1034.     opt_update_xdviad=`find $opt_update_olddir/xdvi* $opt_update_oldtexmf \( -name XDvi -o -name XDvi.ad \) -print | sed q 2>/dev/null`
  1035.     test ! -f "$opt_update_xdviad" && opt_update_xdviad=
  1036. }
  1037.  
  1038. ################################################################
  1039. # menus:
  1040. ################################################################
  1041. menu_main()
  1042. {
  1043.     while true; do
  1044.         cls
  1045.         opt_savespace_man=X
  1046.         test "$opt_savespace_man_rm" = X || test "$opt_savespace_man_gzip" = X ||
  1047.           opt_savespace_man=' '
  1048.         textvar_show screen_1; echo
  1049.         case `getopt SDOIHQ 'Enter command'` in
  1050.           S) menu_series;;
  1051.           D) menu_directories;;
  1052.           O) menu_options;;
  1053.           I) install_now;;
  1054.           H) help help_1;;
  1055.           Q) exit_on_confirm;;
  1056.         esac
  1057.     done
  1058. }
  1059.  
  1060. menu_directories()
  1061. {
  1062.     while true; do
  1063.         cls
  1064.         textvar_show screen_2; echo
  1065.         case `getopt 12RQ 'Enter command'` in
  1066.           1) gets TETEXDIR; TETEXDIR=`dirname "$TETEXDIR/x" | sed 's@//*@/@g'`
  1067.              TEXMF=`echo $TETEXDIR/texmf | sed 's@//*@/@g'`;;
  1068.           2) gets TEXMF; TEXMF=`dirname "$TEXMF/x" | sed 's@//*@/@g'`;;
  1069.           R) return;;
  1070.           Q) exit_on_confirm;;
  1071.         esac
  1072.     done
  1073. }
  1074.  
  1075. menu_options()
  1076. {
  1077.     while true; do
  1078.         cls
  1079.         textvar_show screen_3; echo
  1080.         case `getopt ASMCRQ 'Enter command'` in
  1081.           A) toggle opt_varfonts
  1082.              if test "$opt_varfonts" = X; then
  1083.                cls; textvar_show screen_3; echo
  1084.                opt_varfonts_dir=$opt_varfonts_dir_last
  1085.                test -z "$opt_varfonts_dir" && opt_varfonts_dir=/var/tmp/texfonts
  1086.                gets opt_varfonts_dir 'alternate directory'
  1087.              else
  1088.                opt_varfonts_dir_last=$opt_varfonts_dir
  1089.                opt_varfonts_dir=''
  1090.              fi
  1091.              ;;
  1092.           S) toggle opt_symlinks
  1093.              if test "$opt_symlinks" = X; then
  1094.                cls; textvar_show screen_3; echo
  1095.                opt_symlinks_bin=$opt_symlinks_bin_last
  1096.                test -z "$opt_symlinks_bin" && opt_symlinks_bin=/usr/local/bin
  1097.                gets opt_symlinks_bin 'binary directory'
  1098.                opt_symlinks_man=$opt_symlinks_man_last
  1099.                test -z "$opt_symlinks_man" && opt_symlinks_man=`dirname $opt_symlinks_bin`/man
  1100.                gets opt_symlinks_man 'man directory   '
  1101.                opt_symlinks_info=$opt_symlinks_info_last
  1102.                test -z "$opt_symlinks_info" && opt_symlinks_info=`dirname $opt_symlinks_bin`/info
  1103.                gets opt_symlinks_info 'info directory  '
  1104.              else
  1105.                opt_symlinks_bin_last=$opt_symlinks_bin
  1106.                opt_symlinks_man_last=$opt_symlinks_man
  1107.                opt_symlinks_info_last=$opt_symlinks_info
  1108.                opt_symlinks_bin=''; opt_symlinks_man=''; opt_symlinks_info=''
  1109.              fi
  1110.              ;;
  1111.           M) cls; textvar_show screen_3; echo
  1112.              opt_savespace_man=' '
  1113.              opt_savespace_man_rm=' '
  1114.              opt_savespace_man_gzip=' '
  1115.              yesno 'remove nroff sources' &&
  1116.                  { opt_savespace_man_rm=X; opt_savespace_man=X; }
  1117.              yesno 'compress preprocessed manpages with gzip' &&
  1118.                  { opt_savespace_man_gzip=X; opt_savespace_man=X; }
  1119.              ;;
  1120.           C) toggle opt_update
  1121.              if test "$opt_update" = X; then
  1122.                cls; textvar_show screen_3; echo
  1123.                opt_update_olddir=$opt_update_olddir_last
  1124.                test -z "$opt_update_olddir" && test -f /usr/local/tex/texmf.cnf &&
  1125.                  opt_update_olddir=/usr/local/tex
  1126.                gets opt_update_olddir 'old TETEXDIR'
  1127.                test -f $opt_update_olddir/texmf.cnf && continue
  1128.                echo "File $opt_update_olddir/texmf.cnf does not exist."
  1129.                readln
  1130.                opt_update=' '
  1131.                opt_update_olddir=''
  1132.              else
  1133.                opt_update_olddir_last=$opt_update_olddir
  1134.                opt_update_olddir=''
  1135.              fi
  1136.              ;;
  1137.           R) return;;
  1138.           Q) exit_on_confirm;;
  1139.         esac
  1140.     done
  1141. }
  1142.  
  1143. menu_series()
  1144. {
  1145.     while true; do
  1146.         cls
  1147.         textvar_show screen_4; echo
  1148.         menu_series_ans=`getopt PBGFDRQ 'Enter command'`
  1149.         case "$menu_series_ans" in
  1150.           P) series=bin;;
  1151.           B) series=base;;
  1152.           G) series=goodies;;
  1153.           F) series=fonts;;
  1154.           D) series=doc;;
  1155.         esac
  1156.         case "$menu_series_ans" in
  1157.           [PBGFD])
  1158.              cls; textvar_show screen_4;
  1159.              textvar_show s_${series}_h; echo
  1160.              case `getopt ANSLC "install series $series ([A]ll, [N]o, [S]elect, [L]ist, [C]ancel)"` in
  1161.                A) series_select_all $series; nobin_stat;;
  1162.                N) series_deselect_all $series; nobin_stat;;
  1163.                S) series_usersetup $series; nobin_stat;;
  1164.                L) series_list $series;;
  1165.                C) : ;;
  1166.              esac;;
  1167.           R) return;;
  1168.           Q) exit_on_confirm;;
  1169.         esac
  1170.     done
  1171. }
  1172.  
  1173. package_showinfo()
  1174. {
  1175.     p=$1
  1176.     cls
  1177.     eval p_current_du=\$p_${p}_du
  1178.     eval p_current_n=\$p_${p}_n
  1179.     eval p_current_l=\$p_${p}_l
  1180.     eval p_current_v=\$p_${p}_v
  1181.     echo "Package:          $p_current_n"
  1182.     echo "Series:           $series"
  1183.     if [ ! -z "$p_current_v" ] ; then
  1184.       echo "Version:          $p_current_v"
  1185.     fi
  1186.     echo "Status:           $p_current_l"
  1187.     echo "Disk space:       $p_current_du"
  1188.     textvar_show p_${p}_h
  1189. }
  1190.  
  1191. series_usersetup()
  1192. {
  1193.     su_series=$1
  1194.     eval all_packages=\"\$s_${su_series}_lf\"
  1195.     for p in $all_packages; do
  1196.         package_showinfo $p
  1197.         echo
  1198.         p_current_s=false
  1199.         yesno "install package $p_current_n" && p_current_s=true
  1200.         eval p_${p}_s=$p_current_s
  1201.     done
  1202.     series_stat $su_series
  1203. }
  1204.  
  1205. exit_on_confirm()
  1206. {
  1207.     cls
  1208.     yesno 'Really quit' && exit
  1209. }
  1210.  
  1211. ################################################################
  1212. # global variables
  1213. ################################################################
  1214. here=`pwd`
  1215. VERSION=0.3.4
  1216. # prefix in the archives:
  1217. tetex_prefix=teTeX
  1218. TETEXDIR=/usr/local/$tetex_prefix
  1219. TEXMF=$TETEXDIR/texmf
  1220. man_texmf_old_fallback=$TEXMF
  1221. man_tetexdir_old_fallback=$TETEXDIR
  1222. TMPDIR=${TMP-/tmp}/inst.tmp.$$
  1223. trap 'cd /; rm -rf "$TMPDIR"; rm -f "$TEXMF" 2>/dev/null; trap '' 0; exit 0' 0 1 2 15
  1224. while test -d $TMPDIR; do
  1225.   tra "temporal directory $TMPDIR already exists"
  1226. done
  1227. mkdirhier $TMPDIR
  1228. ERRLOG=${TMPDIR}/inst.errlog.$$
  1229. : ${PAGER=more}
  1230. mt_site_loc=maketex/maketex.site
  1231.  
  1232. envvars='
  1233. BIBINPUTS BSTINPUTS DVIPSHEADERS GFFONTS GLYPHFONTS MFBASES MFINPUTS
  1234. MFPOOL PKFONTS TEXCONFIG TEXFONTS TEXFORMATS TEXINPUTS TEXMFCNF TEXPICTS
  1235. TEXPKS TEXPOOL TFMFONTS VFFONTS DVIPSFONTS XDVIVFS XDVIFONTS DVILJFONTS
  1236. '
  1237.  
  1238. opt_varfonts=' '
  1239. opt_varfonts_dir=''
  1240. opt_varfonts_dir_last=''
  1241. opt_symlinks=' '
  1242. opt_symlinks_bin=''
  1243. opt_symlinks_man=''
  1244. opt_symlinks_info=''
  1245. opt_symlinks_bin_last=''
  1246. opt_symlinks_man_last=''
  1247. opt_symlinks_info_last=''
  1248. opt_savespace_man=' '
  1249. opt_savespace_man_rm=' '
  1250. opt_savespace_man_gzip=' '
  1251. opt_update=' '
  1252. opt_update_olddir=''
  1253. opt_update_olddir_last=''
  1254.  
  1255. this_platform=
  1256.  
  1257. S_nobin_la='base goodies fonts doc'
  1258. S_all_la="$S_nobin_la bin"
  1259.  
  1260. #############################################################################
  1261. # The supported binaries. Add new platforms to the s_bin_la list and create
  1262. # a p_PLATFORM st structure with the following variables:
  1263. #       _d: the directory name below bin for this platform
  1264. #      _du: disk usage
  1265. #       _n: name of the package
  1266. #       -h: help text
  1267. #############################################################################
  1268.  
  1269. # NEW PLATFORM: add entry in s_bin_la variable.
  1270. s_bin_la='
  1271. i386_freebsd205 i386_freebsd215 i386_freebsd210 i386_netbsd10 i386_netbsd11 i386_bsdi20
  1272. m68k_linux m68k_linuxaout i486_linux i486_linuxaout mips_irix52
  1273. mips_irix53 rs6000_aix32 rs6000_aix411 sparc_solaris25 sparc_solaris24
  1274. sparc_sunos413 alpha_osf20 alpha_osf32 hppa11_hpux901 hppa11_hpux1001
  1275. mips_ultrix_44 mab_nextstep3
  1276. '
  1277. s_bin_n=binaries
  1278. s_bin_d=binaries
  1279. s_bin_h='
  1280. This series contains the binaries for teTeX. There is one binary package
  1281. for each supported platform containing all teTeX binaries for that
  1282. platform.
  1283. '
  1284.  
  1285. # NEW PLATFORM: add p_*_{l,d,du,n,h} variables.
  1286. p_i386_freebsd215_l='optional'
  1287. p_i386_freebsd215_d='i386-freebsd2.1.5'
  1288. p_i386_freebsd215_du=3070
  1289. p_i386_freebsd215_n='FreeBSD/i386 2.1.5'
  1290. p_i386_freebsd215_h='
  1291. This package contains all binaries for FreeBSD/i386 2.1.5 platforms.
  1292. '
  1293. p_i386_freebsd210_l='optional'
  1294. p_i386_freebsd210_d='i386-freebsd2.1.0'
  1295. p_i386_freebsd210_du=3070
  1296. p_i386_freebsd210_n='FreeBSD/i386 2.1.0'
  1297. p_i386_freebsd210_h='
  1298. This package contains all binaries for FreeBSD/i386 2.1.0 platforms.
  1299. '
  1300. p_i386_freebsd205_l='optional'
  1301. p_i386_freebsd205_d='i386-freebsd2.0.5'
  1302. p_i386_freebsd205_du=3070
  1303. p_i386_freebsd205_n='FreeBSD/i386 2.0.5'
  1304. p_i386_freebsd205_h='
  1305. This package contains all binaries for FreeBSD/i386 2.0.5 platforms.
  1306. '
  1307. p_i386_bsdi20_l='optional'
  1308. p_i386_bsdi20_d='i386-bsdi2.0'
  1309. p_i386_bsdi20_du=6420
  1310. p_i386_bsdi20_n='BSDI/i386 2.0'
  1311. p_i386_bsdi20_h='
  1312. This package contains all binaries for BSDI/i386 2.0 platforms.
  1313. '
  1314. p_i386_netbsd11_l='optional'
  1315. p_i386_netbsd11_d='i386-netbsd1.1'
  1316. p_i386_netbsd11_du=4340
  1317. p_i386_netbsd11_n='NetBSD/i386 1.1'
  1318. p_i386_netbsd11_h='
  1319. This package contains all binaries for NetBSD/i386 1.1 platforms.
  1320. '
  1321. p_i386_netbsd10_l='optional'
  1322. p_i386_netbsd10_d='i386-netbsd1.0'
  1323. p_i386_netbsd10_du=3190
  1324. p_i386_netbsd10_n='NetBSD/i386 1.0'
  1325. p_i386_netbsd10_h='
  1326. This package contains all binaries for NetBSD/i386 1.0 platforms.
  1327. '
  1328. p_mab_nextstep3_l='optional'
  1329. p_mab_nextstep3_d='mab-nextstep3'
  1330. p_mab_nextstep3_du='15183'
  1331. p_mab_nextstep3_n='NEXTSTEP multi-architecture binaries'
  1332. p_mab_nextstep3_h='
  1333. This package contains all binaries for NEXTSTEP (NeXT,Intel,HP-PA,SPARC)
  1334. platforms.
  1335. '
  1336. p_mips_ultrix_44_l='optional'
  1337. p_mips_ultrix_44_d='mips-ultrix4.4'
  1338. p_mips_ultrix_44_du='7920'
  1339. p_mips_ultrix_44_n='Mips ULTRIX 4.4 (RISC)'
  1340. p_mips_ultrix_44_h='
  1341. This package contains all binaries for Mips ULTRIX 4.4 (RISC) platforms.
  1342. '
  1343. p_m68k_linuxaout_l='optional'
  1344. p_m68k_linuxaout_d='m68k-linuxoldld'
  1345. p_m68k_linuxaout_du='2550'
  1346. p_m68k_linuxaout_n='Linux 68k (a.out)'
  1347. p_m68k_linuxaout_h='
  1348. This package contains all binaries for Linux 68k (a.out) platforms.
  1349. '
  1350. p_m68k_linux_l='optional'
  1351. p_m68k_linux_d='m68k-linux'
  1352. p_m68k_linux_du=2500
  1353. p_m68k_linux_n='Linux 68k (ELF)'
  1354. p_m68k_linux_h='
  1355. This package contains all binaries for Linux 68k (ELF) platforms.
  1356. The binaries are in ELF format and need ld.so version 1.7.3 or higher and
  1357. libc version 5.0.9 or higher.
  1358. '
  1359. p_alpha_osf32_l='optional'
  1360. p_alpha_osf32_d='alpha-osf3.2'
  1361. p_alpha_osf32_du=5570
  1362. p_alpha_osf32_n='DEC OSF/1 V3.2 Alpha-AXP'
  1363. p_alpha_osf32_h='
  1364. This package contains all binaries for DEC OSF/1 V3.2 Alpha-AXP platforms.
  1365. '
  1366. p_alpha_osf20_l=optional
  1367. p_alpha_osf20_d=alpha-osf2.0
  1368. p_alpha_osf20_du=5570
  1369. p_alpha_osf20_n='DEC OSF/1 V2.0 Alpha'
  1370. p_alpha_osf20_h='
  1371. This package contains all binaries for DEC OSF/1 V2.0 Alpha platforms.
  1372. '
  1373.  
  1374. p_hppa11_hpux1001_l=optional
  1375. p_hppa11_hpux1001_d=hppa1.1-hpux10.01
  1376. p_hppa11_hpux1001_du=3520
  1377. p_hppa11_hpux1001_n='HP-UX 10.01 9000/710'
  1378. p_hppa11_hpux1001_h='
  1379. This package contains all binaries for HP-UX 10.01 9000/710 platforms.
  1380. '
  1381.  
  1382. p_hppa11_hpux901_l=optional
  1383. p_hppa11_hpux901_d=hppa1.1-hpux9.01
  1384. p_hppa11_hpux901_du=5330
  1385. p_hppa11_hpux901_n='HP-UX 9.01 9000/710'
  1386. p_hppa11_hpux901_h='
  1387. This package contains all binaries for HP-UX 9.01 9000/710 platforms.
  1388. '
  1389.  
  1390. p_i486_linux_l=optional
  1391. p_i486_linux_d=i486-linux
  1392. p_i486_linux_du=2720
  1393. p_i486_linux_n='Linux Intel x86 (ELF)'
  1394. p_i486_linux_h='
  1395. This package contains all binaries for Linux on x86 machines.
  1396. The binaries are in ELF format and need ld.so version 1.7.3 or higher and
  1397. libc version 5.0.9 or higher.
  1398. '
  1399. p_i486_linuxaout_l=optional
  1400. p_i486_linuxaout_d=i486-linuxaout
  1401. p_i486_linuxaout_du=2550
  1402. p_i486_linuxaout_n='Linux Intel x86 (a.out)'
  1403. p_i486_linuxaout_h='
  1404. This package contains all binaries for Linux on x86 machines.
  1405. The binaries are in the old a.out format and need version 4 of the
  1406. C library (e.g. libc-4.6.26).
  1407. '
  1408.  
  1409. p_mips_irix52_l=optional
  1410. p_mips_irix52_d=mips-irix5.2
  1411. p_mips_irix52_du=5600
  1412. p_mips_irix52_n='SGI Irix 5.2'
  1413. p_mips_irix52_h='
  1414. This package contains all binaries for SGI Indigo machines running
  1415. Irix-5.2.
  1416. '
  1417.  
  1418. p_mips_irix53_l=optional
  1419. p_mips_irix53_d=mips-irix5.3
  1420. p_mips_irix53_du=6200
  1421. p_mips_irix53_n='SGI Irix 5.3'
  1422. p_mips_irix53_h='
  1423. This package contains all binaries for SGI Indigo machines running
  1424. Irix-5.3.
  1425. '
  1426.  
  1427. p_rs6000_aix411_l=optional
  1428. p_rs6000_aix411_d=rs6000-aix4.1.1
  1429. p_rs6000_aix411_du=4020
  1430. p_rs6000_aix411_n='IBM RS6000 AIX 4.1.1'
  1431. p_rs6000_aix411_h='
  1432. This package contains all binaries for IBM RS600 machines running
  1433. AIX 4.1.1.
  1434. '
  1435.  
  1436. p_rs6000_aix32_l=optional
  1437. p_rs6000_aix32_d=rs6000-aix3.2
  1438. p_rs6000_aix32_du=4090
  1439. p_rs6000_aix32_n='IBM RS6000 AIX 3.2'
  1440. p_rs6000_aix32_h='
  1441. This package contains all binaries for IBM RS600 machines running
  1442. AIX 3.2.
  1443. '
  1444.  
  1445. p_sparc_solaris25_l=optional
  1446. p_sparc_solaris25_d=sparc-solaris2.5
  1447. p_sparc_solaris25_du=4370
  1448. p_sparc_solaris25_n='SUN Sparc Solaris 2.5'
  1449. p_sparc_solaris25_h='
  1450. This package contains all binaries for SUN Sparcs running Solaris 2.5.
  1451. '
  1452.  
  1453. p_sparc_solaris24_l=optional
  1454. p_sparc_solaris24_d=sparc-solaris2.4
  1455. p_sparc_solaris24_du=3650
  1456. p_sparc_solaris24_n='SUN Sparc Solaris 2.4'
  1457. p_sparc_solaris24_h='
  1458. This package contains all binaries for SUN Sparcs running Solaris 2.4.
  1459. '
  1460.  
  1461. p_sparc_sunos413_l=optional
  1462. p_sparc_sunos413_d=sparc-sunos4.1.3
  1463. p_sparc_sunos413_du=4000
  1464. p_sparc_sunos413_n='SUN Sparc SunOS 4.1.3'
  1465. p_sparc_sunos413_h='
  1466. This package contains all binaries for SUN Sparcs running SunOS 4.1.3.
  1467. '
  1468.  
  1469. s_base_n=base
  1470. s_base_d=base
  1471. s_base_h='
  1472. This series contains the most basic packages that are needed for the
  1473. basic functionality of teTeX and a minimal LaTeX system.
  1474. '
  1475. s_base_la='tetex_base latex_base'
  1476.  
  1477. s_goodies_n=goodies
  1478. s_goodies_d=goodies
  1479. s_goodies_la='latex_extra amstex bibtex pictex'
  1480. s_goodies_h='
  1481. This series contains some additional packages: XTeXShell, AMSTeX, PiCTeX,
  1482. BibTeX and LaTeX-extra. Note that most LaTeX add-ons are contained in the
  1483. LaTeX-extra package of this series.
  1484. '
  1485.  
  1486. s_fonts_n=fonts
  1487. s_fonts_d=fonts
  1488. s_fonts_la='dc_fonts sauter_fonts misc_fonts wasy_fonts adobe_fonts ams_fonts bitstrea_fonts'
  1489. s_fonts_h='
  1490. This series contains font packages: DC, oldgerman, pandora, wasy, AMS, concrete
  1491. and support for PostScript fonts from URW, Bitstream and Adobe.
  1492. '
  1493.  
  1494. s_doc_n=documentation
  1495. s_doc_d=doc
  1496. s_doc_la='dcfonts_doc eplain_doc general_doc fontname_doc latex_doc oldgerman_doc texdraw_doc ams_doc programs_doc babel_doc bibtex_doc makeindex_doc'
  1497. s_doc_h='
  1498. This series contains a lot of documentation about teTeX and the packages
  1499. it contains. The whole series contains over 100 dvi files plus TeX-FAQ
  1500. and some other documentation.
  1501. '
  1502.  
  1503. #############################################################################
  1504. # packages:
  1505. #############################################################################
  1506.  
  1507. p_latex_base_l=required
  1508. p_tetex_base_l=required
  1509. p_ams_doc_l=optional
  1510. p_babel_doc_l=optional
  1511. p_bibtex_doc_l=optional
  1512. p_dcfonts_doc_l=optional
  1513. p_eplain_doc_l=optional
  1514. p_fontname_doc_l=optional
  1515. p_general_doc_l=recommended
  1516. p_programs_doc_l=recommended
  1517. p_latex_doc_l=recommended
  1518. p_makeindex_doc_l=optional
  1519. p_oldgerman_doc_l=optional
  1520. p_texdraw_doc_l=optional
  1521. p_adobe_fonts_l=optional
  1522. p_ams_fonts_l=recommended
  1523. p_bitstrea_fonts_l=optional
  1524. p_dc_fonts_l=recommended
  1525. p_misc_fonts=optional
  1526. p_sauter_fonts_l=optional
  1527. p_wasy_fonts_l=recommended
  1528. p_amstex_l=optional
  1529. p_pictex_l=optional
  1530. p_bibtex_l=recommended
  1531. p_latex_extra_l=recommended
  1532.  
  1533. p_latex_base_d=latex-base
  1534. p_latex_base_du=1450
  1535. p_latex_base_n='LaTeX base'
  1536. p_latex_base_v='<1996/06/01>'
  1537. p_latex_base_h='
  1538. This package contains a minimal set of macros to use the LaTeX format.
  1539. If you really want to use LaTeX regularly, you should install the LaTeX
  1540. extra package as well.
  1541. '
  1542. p_tetex_base_d=tetex-base
  1543. p_tetex_base_du=4990
  1544. p_tetex_base_n='teTeX base'
  1545. p_tetex_base_h='
  1546. This package contains the most basic input files for teTeX: runtime
  1547. configuration files, hyphenation tables, manpages and the computer
  1548. modern fonts.
  1549. '
  1550. p_ams_doc_d=ams-doc
  1551. p_ams_doc_du=600
  1552. p_ams_doc_n='AMS documentation'
  1553. p_ams_doc_h='
  1554. This package contains documentation for the AMS (= american mathematical
  1555. society) fonts, AMSLaTeX and AMSTeX. A good thing, if you need lots of
  1556. math in your documents.
  1557. '
  1558. p_babel_doc_d=babel-doc
  1559. p_babel_doc_du=140
  1560. p_babel_doc_n='Babel documentation'
  1561. p_babel_doc_h='
  1562. This package contains documentation for the babel system. Babel is a
  1563. package to support multiple languages in plain TeX and LaTeX.
  1564. '
  1565. p_bibtex_doc_d=bibtex-doc
  1566. p_bibtex_doc_du=170
  1567. p_bibtex_doc_n='BibTeX documentation'
  1568. p_bibtex_doc_h='
  1569. This package contains documentation for the BibTeX programm. BibTeX is
  1570. a tool to make a bibliography for (La)TeX.
  1571. '
  1572. p_dcfonts_doc_d=dcfonts-doc
  1573. p_dcfonts_doc_du=70
  1574. p_dcfonts_doc_n='DC fonts documentation'
  1575. p_dcfonts_doc_h='
  1576. This package contains documentation about the DC fonts (in french, english,
  1577. german) and about the Corc encoding (in german).
  1578. '
  1579. p_eplain_doc_d=eplain-doc
  1580. p_eplain_doc_du=360
  1581. p_eplain_doc_n='eplain documentation'
  1582. p_eplain_doc_h='
  1583. This package contains documentation for the extended plain format (eplain).
  1584. '
  1585. p_fontname_doc_d=fontname-doc
  1586. p_fontname_doc_du=280
  1587. p_fontname_doc_n='Filenames for TeX Fonts'
  1588. p_fontname_doc_v=2.1/tetex
  1589. p_fontname_doc_h='
  1590. This package contains the \"Filenames for TeX Fonts\" document from Karl
  1591. Berry. It describes a scheme to find filenames for font files.
  1592. '
  1593. p_general_doc_d=general-doc
  1594. p_general_doc_du=1210
  1595. p_general_doc_n='General documentation'
  1596. p_general_doc_h='
  1597. This package contains some general information about TeX: the TeX-FAQ, a
  1598. list of ftp servers and a draft for the TeX Directory Standard (TDS).
  1599. '
  1600. p_programs_doc_d=programs-doc
  1601. p_programs_doc_du=1210
  1602. p_programs_doc_n='Kpathsea documentation'
  1603. p_programs_doc_h='
  1604. This package contains documentation about the Kpathsea library and some
  1605. programmes (dvipsk, info, makeinfo). The Kpathsea library is used by some
  1606. programmes in teTeX to locate files on the disk. Its most important
  1607. features are the filename database (ls-R) (speeds up recursive directory
  1608. searches), runtime configuration (search paths can be set up in file)
  1609. and automatic font generation.
  1610. '
  1611. p_latex_doc_d=latex-doc
  1612. p_latex_doc_du=5160
  1613. p_latex_doc_n='LaTeX documentation'
  1614. p_latex_doc_h='
  1615. This package contains documentation for LaTeX: over 70 dvi files and some
  1616. examples.
  1617. '
  1618. p_makeindex_doc_d=makeindex-doc
  1619. p_makeindex_doc_du=110
  1620. p_makeindex_doc_n='Makeindex documentation'
  1621. p_makeindex_doc_h='
  1622. This package contains documentation for the Makeindex program.
  1623. '
  1624. p_oldgerman_doc_d=oldgerman-doc
  1625. p_oldgerman_doc_du=50
  1626. p_oldgerman_doc_n='oldgerman documentation'
  1627. p_oldgerman_doc_h='
  1628. This package contains documentation for some old german fonts.
  1629. '
  1630. p_texdraw_doc_d=texdraw-doc
  1631. p_texdraw_doc_du=820
  1632. p_texdraw_doc_n='TeXdraw documentation'
  1633. p_texdraw_doc_h='
  1634. This package contains documentation for the TeXdraw package. It allows to
  1635. use PostScript graphics within TeX documents.
  1636. '
  1637. p_adobe_fonts_d=adobe-fonts
  1638. p_adobe_fonts_du=2600
  1639. p_adobe_fonts_n='Adobe fonts'
  1640. p_adobe_fonts_h='
  1641. This package contains support files to use some PostScript fonts from
  1642. Adobe within (La)TeX.
  1643. '
  1644. p_ams_fonts_d=ams-fonts
  1645. p_ams_fonts_du=2010
  1646. p_ams_fonts_n='AMS fonts'
  1647. p_ams_fonts_h='
  1648. This package contains the AMS fonts.
  1649. '
  1650. p_bitstrea_fonts_d=bitstrea-fonts
  1651. p_bitstrea_fonts_du=420
  1652. p_bitstrea_fonts_n='Bitstream fonts'
  1653. p_bitstrea_fonts_h='
  1654. This package some PostScript fonts from Bitstream and support files to
  1655. use them within (La)TeX.
  1656. '
  1657. p_dc_fonts_d=dc-fonts
  1658. p_dc_fonts_du=1110
  1659. p_dc_fonts_n='DC fonts'
  1660. p_dc_fonts_h='
  1661. This package contains the DC fonts. These are full 256 character fonts
  1662. containing lots of national characters.
  1663. '
  1664. p_sauter_fonts_d=sauter-fonts
  1665. p_sauter_fonts_du=150
  1666. p_sauter_fonts_n='sauter fonts'
  1667. p_sauter_fonts_h='
  1668. This package contains the sauter fonts.
  1669. '
  1670. p_misc_fonts_d=misc-fonts
  1671. p_misc_fonts_du=1900
  1672. p_misc_fonts_n='misc. fonts'
  1673. p_misc_fonts_h='
  1674. This package contains some fonts families: gothic, pandora, concrete,
  1675. rsfs.
  1676. '
  1677. p_wasy_fonts_d=wasy-fonts
  1678. p_wasy_fonts_du=140
  1679. p_wasy_fonts_n='WASY fonts'
  1680. p_wasy_fonts_h='
  1681. This package contains the symbol font WASY.
  1682. '
  1683. p_amstex_du=160
  1684. p_amstex_n='AMSTeX'
  1685. p_amstex_h='
  1686. This package contains the AMSTeX package. AMSTeX is an extension of the
  1687. plain TeX format with better support of mathematics and easy access to
  1688. the AMS fonts.
  1689. '
  1690. p_pictex_d=pictex
  1691. p_pictex_du=280
  1692. p_pictex_n='PiCTeX'
  1693. p_pictex_h='
  1694. This package contains the PiCTeX macros to draw portable pictures with
  1695. TeX and LaTeX.
  1696. '
  1697. p_bibtex_du=10
  1698. p_bibtex_n='BibTeX'
  1699. p_bibtex_h='
  1700. This package contains some support files for the BibTeX program.
  1701. BibTeX is a tool to make a bibliography for (La)TeX.
  1702. '
  1703. p_latex_extra_d=latex-extra
  1704. p_latex_extra_du=2220
  1705. p_latex_extra_n='LaTeX extra'
  1706. p_latex_extra_h='
  1707. This package contains a lot of extra packages for LaTeX: the tools, graphics,
  1708. amslatex, mfnfss, psnfss packages and many more...
  1709. '
  1710.  
  1711. ################################################################
  1712. # screens:
  1713. ################################################################
  1714. screen_1='====================> teTeX $VERSION installation procedure <====================
  1715.  
  1716.         detected platform: $this_platform_n
  1717.  
  1718.     <S> series:
  1719.           binaries:           $s_bin_ns out of $s_bin_nf, disk space required: $s_bin_dus kB
  1720.           other (summary):    $S_nobin_ns out of $S_nobin_nf, disk space required: $S_nobin_dus kB
  1721.                                                total disk space: $s_total_dus kB
  1722.  
  1723.     <D> directories:
  1724.           TETEXDIR = $TETEXDIR
  1725.           TEXMF    = $TEXMF
  1726.  
  1727.     <O> options:
  1728.           [$opt_varfonts] alternate directory for automatically generated fonts
  1729.           [$opt_symlinks] create symlinks in standard directories
  1730.           [$opt_savespace_man] save space for manpages
  1731.           [$opt_update] update
  1732.  
  1733.     Other commands:
  1734.           <I> start installation,  <H> help,  <Q> quit
  1735.  
  1736. '
  1737.  
  1738. screen_2='Current directories setup:
  1739. ==============================================================================
  1740.  
  1741.   <1>  TETEXDIR:     $TETEXDIR
  1742.   <2>  TEXMF         $TEXMF
  1743.  
  1744. Other options:
  1745. ==============================================================================
  1746.   <R>   return to main menu
  1747.   <Q>   quit
  1748. '
  1749.  
  1750. screen_3='Current options setup:
  1751. ==============================================================================
  1752.  
  1753.   <A>  alternate directory for automatically generated fonts: [$opt_varfonts]
  1754.          directory name: $opt_varfonts_dir
  1755.   <S>  create symlinks in standard directories:               [$opt_symlinks]
  1756.             binaries to: $opt_symlinks_bin
  1757.             manpages to: $opt_symlinks_man
  1758.                 info to: $opt_symlinks_info
  1759.   <M>  save space for manpages                                [$opt_savespace_man]
  1760.           remove nroff sources                          [$opt_savespace_man_rm]
  1761.           compress preprocessed manpages with gzip      [$opt_savespace_man_gzip]
  1762.   <C>  use configuration (xdvi/dvips) from a previous teTeX installation   [$opt_update]
  1763.            old TETEXDIR: $opt_update_olddir
  1764.  
  1765. Other options:
  1766. ==============================================================================
  1767.   <R>   return to main menu
  1768.   <Q>   quit
  1769. '
  1770.  
  1771. screen_4='Current series setup:
  1772. ==============================================================================
  1773.   <P>   platforms: $s_bin_ns out of $s_bin_nf, disk space required: $s_bin_dus kB
  1774.   <B>   base:      $s_base_ns out of $s_base_nf, disk space required: $s_base_dus kB
  1775.   <G>   goodies:   $s_goodies_ns out of $s_goodies_nf, disk space required: $s_goodies_dus kB
  1776.   <F>   fonts:     $s_fonts_ns out of $s_fonts_nf, disk space required: $s_fonts_dus kB
  1777.   <D>   doc:       $s_doc_ns out of $s_doc_nf, disk space required: $s_doc_dus kB
  1778.                                     total disk space: $s_total_dus kB
  1779.  
  1780. ==============================================================================
  1781.   <R>   return to main menu
  1782.   <Q>   quit
  1783. '
  1784.  
  1785. screen_6='teTeX can be used on multiple platforms by having a subdirectory for each
  1786. installed binary package in $TETEXDIR/bin.
  1787.  
  1788. However, if you do not plan to add binaries for other platforms to
  1789. your teTeX installation, your binaries can directly be put into the
  1790. $TETEXDIR/bin directory.'
  1791.  
  1792. help_1='
  1793. This is the installation program of the teTeX distribution.
  1794.  
  1795. The installation procedure is really simple: just go through the
  1796. menus and select "start installation" if all options are set up
  1797. all right.
  1798.  
  1799. To select a menu item (a letter or a number makred with brackets)
  1800. just enter the corresponding letter or number and press return
  1801. (the letters are case insensitive).
  1802.  
  1803. Right now, the each menu item is explained in detail:
  1804.  
  1805. ======================================================================
  1806.   The detected platform:
  1807. ======================================================================
  1808.  
  1809. From the list of supported platforms, the installation procedure
  1810. tries to find out which binaries do run best on your system, if it
  1811. is supported. These binaries are then pre-selected. If you plan an
  1812. installation for a hetrogenous network, you may need to add binaries
  1813. for other platforms via the series menue (see below).
  1814.  
  1815.  
  1816. ======================================================================
  1817.   The series menu (<S>)
  1818. ======================================================================
  1819.  
  1820. The series menu allows you to select and deselect packages. The
  1821. packages are grouped in some series:
  1822.  
  1823.   binaries: you need one binary package for each platform you use
  1824.   base:     this series contains a minimal TeX+LaTeX system
  1825.  
  1826. All other series are "add-ons":
  1827.  
  1828.   goodies:  useful extra stuff, including much about LaTeX
  1829.   fonts:    many extra fonts: amsfonts, PostScript fonts, DC, ...
  1830.   doc:      much documentation. But one cannot have enough, right?
  1831.  
  1832. ======================================================================
  1833.   The directories menu (<D>)
  1834. ======================================================================
  1835.  
  1836. The teTeX distribution will be installed in a directory of your choice.
  1837. This directory is called TETEXDIR. You may choose any directory you like
  1838. since there are no absolute paths compiled into the binaries. Instead, a
  1839. extension of the Kpathsea library is used (selfdir extension) and all
  1840. paths are relative to the location of the binaries.
  1841.  
  1842. The platform independend files are stored in a directory tree called
  1843. TEXMF. TEXMF defaults to TETEXDIR/texmf, but you can change this, if you
  1844. want (many systems use /ust/lib/texmf or /usr/local/lib/texmf)
  1845.  
  1846. ======================================================================
  1847.   The options menu (<O>)
  1848. ======================================================================
  1849.  
  1850. The options are optional part of the installation, as they are not
  1851. always applicable or useful.
  1852.  
  1853. "alternate directory":
  1854. ======================
  1855.  
  1856. If you choose an alternate directory for automatically generated fonts,
  1857. you can mount your TEXMF tree readonly (as long as you do not want to
  1858. perform administrative tasks: change configuration, install new inputs
  1859. and the like).
  1860.  
  1861. There are two good reasons to do this:
  1862.   - TEXMF is in your /usr partition and you want to mount it readonly
  1863.     (or in another partition that you mount readonly)
  1864.   - TEXMF will be accessable via NFS and you do not want to give
  1865.     write permissions to your NFS clients
  1866.  
  1867. If the second case applies to you, please note that the filename
  1868. database (ls-R) and the automatically generated fonts will be installed
  1869. in the alternate directory you choose. If this directory is local to
  1870. each client, you need to run texhash on each machine to build the
  1871. filename database there. Another disadvantage is that new fonts are not
  1872. shared in that case.
  1873.  
  1874.  
  1875. "symlinks in standard directories"
  1876. ==================================
  1877.  
  1878. To make your binaries, manpages and infopages available to your system,
  1879. there are two common ways:
  1880.   1) install them in "standard places" that are searched for these files
  1881.   2) change your search paths to include the new directories
  1882.  
  1883. If you select the "symlinks" option, symbolic links will be installed in
  1884. the directories you choose. Note that if you share the teTeX installation
  1885. accross several machines via NFS and if the chosen "standard places" are
  1886. not shared, you need to create the symbolic links on each client, too
  1887. (or use method 2 on your clients).
  1888.  
  1889. If you do not use the "symlinks" option, you propably need to set up
  1890. your search paths (PATH, MANPATH, INFOPATH).
  1891.  
  1892.  
  1893. "save space for manpages"
  1894. =========================
  1895.  
  1896. Remove the sources for the manpages, if you do not want to keep them
  1897. (the distribution contains preprocessed manpages).
  1898.  
  1899. You may compress the preprocessed manpages with gzip, if your system
  1900. supports this.
  1901.  
  1902.  
  1903. "use configuration from a previous teTeX installation"
  1904. ======================================================
  1905.  
  1906. If you have an old version of teTeX, you may consider using some
  1907. configuration files from the old system and thus save the time for
  1908. reconfiguring. This option supports the xdvi and dvips configuration
  1909. (papertypes, modes, paper offsets for printers,...), but not your
  1910. hyphenation tables for (La)TeX.
  1911.  
  1912. ======================================================================
  1913.   Other commands (<I>, <H> and <Q>
  1914. ======================================================================
  1915.  
  1916. Well, this is easy to explain:
  1917.   <I> starts the installation after you are confident with set setup
  1918.   <H> displays this help
  1919.   <Q> quits the installation program
  1920. '
  1921.  
  1922.  
  1923. guess()
  1924. {
  1925.   cat > $TMPDIR/config.guess <<'eof-for-guess'
  1926. #! /bin/sh
  1927. # Attempt to guess a canonical system name.
  1928. #   Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
  1929. #
  1930. # This file is free software; you can redistribute it and/or modify it
  1931. # under the terms of the GNU General Public License as published by
  1932. # the Free Software Foundation; either version 2 of the License, or
  1933. # (at your option) any later version.
  1934. #
  1935. # This program is distributed in the hope that it will be useful, but
  1936. # WITHOUT ANY WARRANTY; without even the implied warranty of
  1937. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1938. # General Public License for more details.
  1939. #
  1940. # You should have received a copy of the GNU General Public License
  1941. # along with this program; if not, write to the Free Software
  1942. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  1943. #
  1944. # As a special exception to the GNU General Public License, if you
  1945. # distribute this file as part of a program that contains a
  1946. # configuration script generated by Autoconf, you may include it under
  1947. # the same distribution terms that you use for the rest of that program.
  1948.  
  1949. # Written by Per Bothner <bothner@cygnus.com>.
  1950. # The master version of this file is at the FSF in /home/gd/gnu/lib.
  1951. #
  1952. # This script attempts to guess a canonical system name similar to
  1953. # config.sub.  If it succeeds, it prints the system name on stdout, and
  1954. # exits with 0.  Otherwise, it exits with 1.
  1955. #
  1956. # The plan is that this can be called by configure scripts if you
  1957. # don't specify an explicit system type (host/target name).
  1958. #
  1959. # Only a few systems have been added to this list; please add others
  1960. # (but try to keep the structure clean).
  1961. #
  1962.  
  1963. # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
  1964. # (ghazi@noc.rutgers.edu 8/24/94.)
  1965. if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
  1966.     PATH=$PATH:/.attbin ; export PATH
  1967. fi
  1968.  
  1969. UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
  1970. UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
  1971. UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
  1972. UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
  1973.  
  1974. trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
  1975.  
  1976. # Note: order is significant - the case branches are not exclusive.
  1977.  
  1978. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
  1979.     alpha:OSF1:V*:*)
  1980.     # After 1.2, OSF1 uses "V1.3" for uname -r.
  1981.     echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^V//'`
  1982.     exit 0 ;;
  1983.     alpha:OSF1:*:*)
  1984.     # 1.2 uses "1.2" for uname -r.
  1985.     echo alpha-dec-osf${UNAME_RELEASE}
  1986.         exit 0 ;;
  1987.     21064:Windows_NT:50:3)
  1988.     echo alpha-dec-winnt3.5
  1989.     exit 0 ;;
  1990.     amiga:NetBSD:*:*)
  1991.       echo m68k-cbm-netbsd${UNAME_RELEASE}
  1992.       exit 0 ;;
  1993.     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
  1994.     echo arm-acorn-riscix${UNAME_RELEASE}
  1995.     exit 0;;
  1996.     Pyramid*:OSx*:*:*)
  1997.     if test "`(/bin/universe) 2>/dev/null`" = att ; then
  1998.         echo pyramid-pyramid-sysv3
  1999.     else
  2000.         echo pyramid-pyramid-bsd
  2001.     fi
  2002.     exit 0 ;;
  2003.     sun4*:SunOS:5.*:*)
  2004.     echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
  2005.     exit 0 ;;
  2006.     i86pc:SunOS:5.*:*)
  2007.     echo i386-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
  2008.     exit 0 ;;
  2009.     sun4*:SunOS:6*:*)
  2010.     # According to config.sub, this is the proper way to canonicalize
  2011.     # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
  2012.     # it's likely to be more like Solaris than SunOS4.
  2013.     echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
  2014.     exit 0 ;;
  2015.     sun4*:SunOS:*:*)
  2016.     case "`/usr/bin/arch -k`" in
  2017.         Series*|S4*)
  2018.         UNAME_RELEASE=`uname -v`
  2019.         ;;
  2020.     esac
  2021.     # Japanese Language versions have a version number like `4.1.3-JL'.
  2022.     echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
  2023.     exit 0 ;;
  2024.     sun3*:SunOS:*:*)
  2025.     echo m68k-sun-sunos${UNAME_RELEASE}
  2026.     exit 0 ;;
  2027.     atari*:NetBSD:*:*)
  2028.     echo m68k-atari-netbsd${UNAME_RELEASE}
  2029.     exit 0 ;;
  2030.     sun3*:NetBSD:*:*)
  2031.     echo m68k-sun-netbsd${UNAME_RELEASE}
  2032.     exit 0 ;;
  2033.     mac68k:NetBSD:*:*)
  2034.     echo m68k-apple-netbsd${UNAME_RELEASE}
  2035.     exit 0 ;;
  2036.     RISC*:ULTRIX:*:*)
  2037.     echo mips-dec-ultrix${UNAME_RELEASE}
  2038.     exit 0 ;;
  2039.     VAX*:ULTRIX*:*:*)
  2040.     echo vax-dec-ultrix${UNAME_RELEASE}
  2041.     exit 0 ;;
  2042.     mips:*:4*:UMIPS)
  2043.     echo mips-mips-riscos4sysv
  2044.     exit 0 ;;
  2045.     mips:*:5*:RISCos)
  2046.     echo mips-mips-riscos${UNAME_RELEASE}
  2047.     exit 0 ;;
  2048.     m88k:CX/UX:7*:*)
  2049.     echo m88k-harris-cxux7
  2050.     exit 0 ;;
  2051.     m88k:*:4*:R4*)
  2052.     echo m88k-motorola-sysv4
  2053.     exit 0 ;;
  2054.     m88k:*:3*:R3*)
  2055.     echo m88k-motorola-sysv3
  2056.     exit 0 ;;
  2057.     AViiON:dgux:*:*)
  2058.         # DG/UX returns AViiON for all architectures
  2059.         UNAME_PROCESSOR=`uname -p`
  2060.         if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88100 ] ; then
  2061.     if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
  2062.          -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
  2063.         echo m88k-dg-dgux${UNAME_RELEASE}
  2064.     else
  2065.         echo m88k-dg-dguxbcs${UNAME_RELEASE}
  2066.     fi
  2067.         else echo i586-dg-dgux${UNAME_RELEASE}
  2068.         fi
  2069.      exit 0 ;;
  2070.     M88*:DolphinOS:*:*)    # DolphinOS (SVR3)
  2071.     echo m88k-dolphin-sysv3
  2072.     exit 0 ;;
  2073.     M88*:*:R3*:*)
  2074.     # Delta 88k system running SVR3
  2075.     echo m88k-motorola-sysv3
  2076.     exit 0 ;;
  2077.     XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
  2078.     echo m88k-tektronix-sysv3
  2079.     exit 0 ;;
  2080.     Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
  2081.     echo m68k-tektronix-bsd
  2082.     exit 0 ;;
  2083.     *:IRIX*:*:*)
  2084.     echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
  2085.     exit 0 ;;
  2086.    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
  2087.     echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
  2088.     exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
  2089.     i[34]86:AIX:*:*)
  2090.     echo i386-ibm-aix
  2091.     exit 0 ;;
  2092.     *:AIX:2:3)
  2093.     if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
  2094.         sed 's/^        //' << EOF >dummy.c
  2095.         #include <sys/systemcfg.h>
  2096.  
  2097.         main()
  2098.             {
  2099.             if (!__power_pc())
  2100.                 exit(1);
  2101.             puts("powerpc-ibm-aix3.2.5");
  2102.             exit(0);
  2103.             }
  2104. EOF
  2105.         ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
  2106.         rm -f dummy.c dummy
  2107.         echo rs6000-ibm-aix3.2.5
  2108.     elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
  2109.         echo rs6000-ibm-aix3.2.4
  2110.     else
  2111.         echo rs6000-ibm-aix3.2
  2112.     fi
  2113.     exit 0 ;;
  2114.     *:AIX:*:4)
  2115.     if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
  2116.         IBM_ARCH=rs6000
  2117.     else
  2118.         IBM_ARCH=powerpc
  2119.     fi
  2120.     if [ -x /usr/bin/oslevel ] ; then
  2121.         IBM_REV=`/usr/bin/oslevel`
  2122.     else
  2123.         IBM_REV=4.${UNAME_RELEASE}
  2124.     fi
  2125.     echo ${IBM_ARCH}-ibm-aix${IBM_REV}
  2126.     exit 0 ;;
  2127.     *:AIX:*:*)
  2128.     echo rs6000-ibm-aix
  2129.     exit 0 ;;
  2130.     ibmrt:4.4BSD:*|romp-ibm:BSD:*)
  2131.     echo romp-ibm-bsd4.4
  2132.     exit 0 ;;
  2133.     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC NetBSD and
  2134.     echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to 
  2135.     exit 0 ;;                           # report: romp-ibm BSD 4.3
  2136.     *:BOSX:*:*)
  2137.     echo rs6000-bull-bosx
  2138.     exit 0 ;;
  2139.     DPX/2?00:B.O.S.:*:*)
  2140.     echo m68k-bull-sysv3
  2141.     exit 0 ;;
  2142.     9000/[34]??:4.3bsd:1.*:*)
  2143.     echo m68k-hp-bsd
  2144.     exit 0 ;;
  2145.     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
  2146.     echo m68k-hp-bsd4.4
  2147.     exit 0 ;;
  2148.     9000/[3478]??:HP-UX:*:*)
  2149.     case "${UNAME_MACHINE}" in
  2150.         9000/31? )            HP_ARCH=m68000 ;;
  2151.         9000/[34]?? )         HP_ARCH=m68k ;;
  2152.         9000/7?? | 9000/8?[679] ) HP_ARCH=hppa1.1 ;;
  2153.         9000/8?? )            HP_ARCH=hppa1.0 ;;
  2154.     esac
  2155.     HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
  2156.     echo ${HP_ARCH}-hp-hpux${HPUX_REV}
  2157.     exit 0 ;;
  2158.     3050*:HI-UX:*:*)
  2159.     sed 's/^    //' << EOF >dummy.c
  2160.     #include <unistd.h>
  2161.     int
  2162.     main ()
  2163.     {
  2164.       long cpu = sysconf (_SC_CPU_VERSION);
  2165.       /* The order matters, because CPU_IS_HP_MC68K erroneously returns
  2166.          true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
  2167.          results, however.  */
  2168.       if (CPU_IS_PA_RISC (cpu))
  2169.         {
  2170.           switch (cpu)
  2171.         {
  2172.           case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
  2173.           case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
  2174.           case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
  2175.           default: puts ("hppa-hitachi-hiuxwe2"); break;
  2176.         }
  2177.         }
  2178.       else if (CPU_IS_HP_MC68K (cpu))
  2179.         puts ("m68k-hitachi-hiuxwe2");
  2180.       else puts ("unknown-hitachi-hiuxwe2");
  2181.       exit (0);
  2182.     }
  2183. EOF
  2184.     ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
  2185.     rm -f dummy.c dummy
  2186.     echo unknown-hitachi-hiuxwe2
  2187.     exit 0 ;;
  2188.     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
  2189.     echo hppa1.1-hp-bsd
  2190.     exit 0 ;;
  2191.     9000/8??:4.3bsd:*:*)
  2192.     echo hppa1.0-hp-bsd
  2193.     exit 0 ;;
  2194.     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
  2195.     echo hppa1.1-hp-osf
  2196.     exit 0 ;;
  2197.     hp8??:OSF1:*:*)
  2198.     echo hppa1.0-hp-osf
  2199.     exit 0 ;;
  2200.     parisc*:Lites*:*:*)
  2201.     echo hppa1.1-hp-lites
  2202.     exit 0 ;;
  2203.     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
  2204.     echo c1-convex-bsd
  2205.         exit 0 ;;
  2206.     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
  2207.     if getsysinfo -f scalar_acc
  2208.     then echo c32-convex-bsd
  2209.     else echo c2-convex-bsd
  2210.     fi
  2211.         exit 0 ;;
  2212.     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
  2213.     echo c34-convex-bsd
  2214.         exit 0 ;;
  2215.     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
  2216.     echo c38-convex-bsd
  2217.         exit 0 ;;
  2218.     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
  2219.     echo c4-convex-bsd
  2220.         exit 0 ;;
  2221.     CRAY*X-MP:*:*:*)
  2222.     echo xmp-cray-unicos
  2223.         exit 0 ;;
  2224.     CRAY*Y-MP:*:*:*)
  2225.     echo ymp-cray-unicos${UNAME_RELEASE}
  2226.     exit 0 ;;
  2227.     CRAY*C90:*:*:*)
  2228.     echo c90-cray-unicos${UNAME_RELEASE}
  2229.     exit 0 ;;
  2230.     CRAY-2:*:*:*)
  2231.     echo cray2-cray-unicos
  2232.         exit 0 ;;
  2233.     hp3[0-9][05]:NetBSD:*:*)
  2234.     echo m68k-hp-netbsd${UNAME_RELEASE}
  2235.     exit 0 ;;
  2236.     i[34]86:BSD/386:*:* | *:BSD/OS:*:*)
  2237.     echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
  2238.     exit 0 ;;
  2239.     *:FreeBSD:*:*)
  2240.     echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
  2241.     exit 0 ;;
  2242.     *:NetBSD:*:*)
  2243.     echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
  2244.     exit 0 ;;
  2245.     *:GNU:*:*)
  2246.     echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
  2247.     exit 0 ;;
  2248.     *:Linux:*:*)
  2249.     # The BFD linker knows what the default object file format is, so
  2250.     # first see if it will tell us.
  2251.     ld_help_string=`ld --help 2>&1`
  2252.     if echo $ld_help_string | grep >/dev/null 2>&1 "supported emulations: elf_i[345]86"; then
  2253.       echo "${UNAME_MACHINE}-unknown-linux" ; exit 0
  2254.     elif echo $ld_help_string | grep >/dev/null 2>&1 "supported emulations: i[345]86linux"; then
  2255.       echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0
  2256.     elif echo $ld_help_string | grep >/dev/null 2>&1 "supported emulations: i[345]86coff"; then
  2257.       echo "${UNAME_MACHINE}-unknown-linuxcoff" ; exit 0
  2258.     elif test "${UNAME_MACHINE}" = "alpha" ; then
  2259.       echo alpha-unknown-linux ; exit 0
  2260.     else
  2261.       # Either a pre-BFD a.out linker (linuxoldld) or one that does not give us
  2262.       # useful --help.  Gcc wants to distinguish between linuxoldld and linuxaout.
  2263.       test ! -d /usr/lib/ldscripts/. \
  2264.         && echo "${UNAME_MACHINE}-unknown-linuxoldld" && exit 0
  2265.       # Determine whether the default compiler is a.out or elf
  2266.       cat >dummy.c <<EOF
  2267. main(argc, argv)
  2268. int argc;
  2269. char *argv[];
  2270. {
  2271. #ifdef __ELF__
  2272.   printf ("%s-unknown-linux\n", argv[1]);
  2273. #else
  2274.   printf ("%s-unknown-linuxaout\n", argv[1]);
  2275. #endif
  2276.   return 0;
  2277. }
  2278. EOF
  2279.       ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
  2280.       rm -f dummy.c dummy
  2281.     fi ;;
  2282. # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.  earlier versions
  2283. # are messed up and put the nodename in both sysname and nodename.
  2284.     i[34]86:DYNIX/ptx:4*:*)
  2285.     echo i386-sequent-sysv4
  2286.     exit 0 ;;
  2287.     i[34]86:*:4.*:* | i[34]86:SYSTEM_V:4.*:*)
  2288.     if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
  2289.         echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
  2290.     else
  2291.         echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}
  2292.     fi
  2293.     exit 0 ;;
  2294.     i[34]86:*:3.2:*)
  2295.     if test -f /usr/options/cb.name; then
  2296.         UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
  2297.         echo ${UNAME_MACHINE}-unknown-isc$UNAME_REL
  2298.     elif /bin/uname -X 2>/dev/null >/dev/null ; then
  2299.         UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
  2300.         (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
  2301.         (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
  2302.             && UNAME_MACHINE=i586
  2303.         echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL
  2304.     else
  2305.         echo ${UNAME_MACHINE}-unknown-sysv32
  2306.     fi
  2307.     exit 0 ;;
  2308.     Intel:Mach:3*:*)
  2309.     echo i386-unknown-mach3
  2310.     exit 0 ;;
  2311.     paragon:*:*:*)
  2312.     echo i860-intel-osf1
  2313.     exit 0 ;;
  2314.     i860:*:4.*:*) # i860-SVR4
  2315.     if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
  2316.       echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
  2317.     else # Add other i860-SVR4 vendors below as they are discovered.
  2318.       echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
  2319.     fi
  2320.     exit 0 ;;
  2321.     mini*:CTIX:SYS*5:*)
  2322.     # "miniframe"
  2323.     echo m68010-convergent-sysv
  2324.     exit 0 ;;
  2325.     M680[234]0:*:R3V[567]*:*)
  2326.     test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
  2327.     3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0)
  2328.         uname -p 2>/dev/null | grep 86 >/dev/null \
  2329.           && echo i486-ncr-sysv4.3 && exit 0 ;;
  2330.     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
  2331.         uname -p 2>/dev/null | grep 86 >/dev/null \
  2332.           && echo i486-ncr-sysv4 && exit 0 ;;
  2333.     m680[234]0:LynxOS:2.[23]*:*)
  2334.     echo m68k-lynx-lynxos${UNAME_RELEASE}
  2335.     exit 0 ;;
  2336.     mc68030:UNIX_System_V:4.*:*)
  2337.     echo m68k-atari-sysv4
  2338.     exit 0 ;;
  2339.     i[34]86:LynxOS:2.[23]*:*)
  2340.     echo i386-lynx-lynxos${UNAME_RELEASE}
  2341.     exit 0 ;;
  2342.     TSUNAMI:LynxOS:2.[23]*:*)
  2343.     echo sparc-lynx-lynxos${UNAME_RELEASE}
  2344.     exit 0 ;;
  2345.     rs6000:LynxOS:2.[23]*:*)
  2346.     echo rs6000-lynx-lynxos${UNAME_RELEASE}
  2347.     exit 0 ;;
  2348.     RM*:SINIX-*:*:*)
  2349.     echo mips-sni-sysv4
  2350.     exit 0 ;;
  2351.     *:SINIX-*:*:*)
  2352.     if uname -p 2>/dev/null >/dev/null ; then
  2353.         UNAME_MACHINE=`(uname -p) 2>/dev/null`
  2354.         echo ${UNAME_MACHINE}-sni-sysv4
  2355.     else
  2356.         echo ns32k-sni-sysv
  2357.     fi
  2358.     exit 0 ;;
  2359. esac
  2360.  
  2361. #echo '(No uname command or uname output not recognized.)' 1>&2
  2362. #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
  2363.  
  2364. cat >dummy.c <<EOF
  2365. #ifdef _SEQUENT_
  2366. # include <sys/types.h>
  2367. # include <sys/utsname.h>
  2368. #endif
  2369. main ()
  2370. {
  2371. #if defined (sony)
  2372. #if defined (MIPSEB)
  2373.   /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
  2374.      I don't know....  */
  2375.   printf ("mips-sony-bsd\n"); exit (0);
  2376. #else
  2377. #include <sys/param.h>
  2378.   printf ("m68k-sony-newsos%s\n",
  2379. #ifdef NEWSOS4
  2380.           "4"
  2381. #else
  2382.       ""
  2383. #endif
  2384.          ); exit (0);
  2385. #endif
  2386. #endif
  2387.  
  2388. #if defined (__arm) && defined (__acorn) && defined (__unix)
  2389.   printf ("arm-acorn-riscix"); exit (0);
  2390. #endif
  2391.  
  2392. #if defined (hp300) && !defined (hpux)
  2393.   printf ("m68k-hp-bsd\n"); exit (0);
  2394. #endif
  2395.  
  2396. #if defined (NeXT)
  2397. #if !defined (__ARCHITECTURE__)
  2398. #define __ARCHITECTURE__ "m68k"
  2399. #endif
  2400.   int version;
  2401.   version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
  2402.   printf ("%s-next-nextstep%s\n", __ARCHITECTURE__,  version==2 ? "2" : "3");
  2403.   exit (0);
  2404. #endif
  2405.  
  2406. #if defined (MULTIMAX) || defined (n16)
  2407. #if defined (UMAXV)
  2408.   printf ("ns32k-encore-sysv\n"); exit (0);
  2409. #else
  2410. #if defined (CMU)
  2411.   printf ("ns32k-encore-mach\n"); exit (0);
  2412. #else
  2413.   printf ("ns32k-encore-bsd\n"); exit (0);
  2414. #endif
  2415. #endif
  2416. #endif
  2417.  
  2418. #if defined (__386BSD__)
  2419.   printf ("i386-unknown-bsd\n"); exit (0);
  2420. #endif
  2421.  
  2422. #if defined (sequent)
  2423. #if defined (i386)
  2424.   printf ("i386-sequent-dynix\n"); exit (0);
  2425. #endif
  2426. #if defined (ns32000)
  2427.   printf ("ns32k-sequent-dynix\n"); exit (0);
  2428. #endif
  2429. #endif
  2430.  
  2431. #if defined (_SEQUENT_)
  2432.     struct utsname un;
  2433.  
  2434.     uname(&un);
  2435.  
  2436.     if (strncmp(un.version, "V2", 2) == 0) {
  2437.     printf ("i386-sequent-ptx2\n"); exit (0);
  2438.     }
  2439.     if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
  2440.     printf ("i386-sequent-ptx1\n"); exit (0);
  2441.     }
  2442.     printf ("i386-sequent-ptx\n"); exit (0);
  2443.  
  2444. #endif
  2445.  
  2446. #if defined (vax)
  2447. #if !defined (ultrix)
  2448.   printf ("vax-dec-bsd\n"); exit (0);
  2449. #else
  2450.   printf ("vax-dec-ultrix\n"); exit (0);
  2451. #endif
  2452. #endif
  2453.  
  2454. #if defined (alliant) && defined (i860)
  2455.   printf ("i860-alliant-bsd\n"); exit (0);
  2456. #endif
  2457.  
  2458.   exit (1);
  2459. }
  2460. EOF
  2461.  
  2462. ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
  2463. rm -f dummy.c dummy
  2464.  
  2465. # Apollos put the system type in the environment.
  2466.  
  2467. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
  2468.  
  2469. # Convex versions that predate uname can use getsysinfo(1)
  2470.  
  2471. if [ -x /usr/convex/getsysinfo ]
  2472. then
  2473.     case `getsysinfo -f cpu_type` in
  2474.     c1*)
  2475.     echo c1-convex-bsd
  2476.     exit 0 ;;
  2477.     c2*)
  2478.     if getsysinfo -f scalar_acc
  2479.     then echo c32-convex-bsd
  2480.     else echo c2-convex-bsd
  2481.     fi
  2482.     exit 0 ;;
  2483.     c34*)
  2484.     echo c34-convex-bsd
  2485.     exit 0 ;;
  2486.     c38*)
  2487.     echo c38-convex-bsd
  2488.     exit 0 ;;
  2489.     c4*)
  2490.     echo c4-convex-bsd
  2491.     exit 0 ;;
  2492.     esac
  2493. fi
  2494.  
  2495. #echo '(Unable to guess system type)' 1>&2
  2496.  
  2497. exit 1
  2498. eof-for-guess
  2499.   cd $TMPDIR;
  2500.   sh $TMPDIR/config.guess
  2501. }
  2502.  
  2503. #debug=true
  2504. debug=
  2505.  
  2506. ################################################################
  2507. # main()
  2508. ################################################################
  2509. init
  2510. menu_main
  2511.